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

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0xa8
mov eax, dword [0x42b238]
mov edx, dword [esp + 0xd4]
xor ebx, ebx
mov ecx, dword [esp + 0xd0]
mov dword [esp + 0xa4], eax
mov eax, edx
mov edi, ecx
and eax, 3
mov eax, edx
setne bl
shr ecx, 0x16
inc ebx
and cl, 1
imul ebx, dword [0x4283d4]
mov ebp, ebx
shl ebx, cl
and eax, 3
mov dword [esp + 8], eax
mov eax, dword [esp + 0xc0]
mov dword [esp + 0x10], ebx
je 0x48aa97
mov esi, dword [0x428ea4]
lea ecx, [eax + eax]
cmp ecx, dword [esi + 0x12c]
jge 0x48b75e
imul ebp, eax
mov eax, dword [0x4283d8]
mov ecx, dword [esp + 0xc4]
xor esi, esi
add ebp, dword [0x4283e8]
imul ecx, eax
add ecx, dword [0x4283e4]
mov dword [esp + 0x14], ebp
mov dword [esp + 0x3c], ecx
mov ecx, edi
test ecx, 0x40000000
jne 0x48aad2
mov dword [esp], 0
jmp 0x48aafe
cmp dword [0x428ec4], 0
je 0x48aaec
mov ecx, dword [0x428ea4]
cmp dword [ecx + 0x158], 0
mov ecx, edi
je 0x48aac9
and ecx, 0xffcc0000
or ecx, 0x20b04
xor edi, edi
inc edi
mov dword [esp], edi
cmp dword [esp + 8], 0
je 0x48ab17
cmp dword [0x428ec8], 3
jne 0x48ab17
xor edx, edx
inc edx
mov dword [esp + 8], edx
jmp 0x48ab2d
and dl, 3
je 0x48ab2d
cmp dl, 1
jne 0x48ab28
mov esi, 4
jmp 0x48ab2d
mov esi, 0xc
mov ebp, ecx
mov dword [esp + 4], ecx
mov ecx, dword [esp + 0xc8]
shr ebp, 0x13
mov ebx, ebp
and ebx, 0x10
movzx ecx, word [ecx]
mov edx, ecx
add edx, 0xffffdc46
movzx edx, dx
cmp edx, 3
ja 0x48ab6d
add cl, 0x46
cmp cl, 3
ja case.default.0x48ab60
movzx ecx, cl
jmp dword [ecx*4 + 0x41c524]
add eax, eax
neg eax
jmp case.0x48ab60.68
mov dword [esp + 0x2c], 0
xor edx, edx
jmp 0x48abc7
xor edx, edx
jmp 0x48ab96
mov ecx, 0x99999999
jmp 0x48ab8b
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 + 0xc8]
sete cl
and ebp, 1
shl edx, cl
mov cx, word [0x427fb6]
mov dword [esp + 0x2c], edx
mov edx, ebp
mov word [eax], cx
and dword [esp + 4], 0xfff7ffff
mov ebp, dword [esp + 0xcc]
mov eax, ecx
or esi, ebx
mov dword [esp + 0x38], edx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x48ac23
cmp ebp, 2
jl 0x48ac00
mov eax, dword [esp + 0xc8]
movzx eax, word [eax + 2]
and eax, 0xfc00
cmp eax, 0xdc00
jne 0x48ac05
jmp 0x48ac23
cmp ebp, 1
jne 0x48ac23
mov ecx, dword [esp + 0xc8]
mov edx, dword [esp + 0xcc]
xor eax, eax
mov word [ecx + eax*2], 0xfffd
inc eax
cmp eax, edx
jl 0x48ac15
mov cx, word [ecx]
mov ebp, dword [esp + 4]
mov eax, esi
and ecx, 0xff00
or eax, 0x20
cmp ecx, 0xf000
cmovne eax, esi
mov esi, ebp
mov edi, ebp
mov edx, ebp
shr esi, 9
and edi, 0x1ff
and esi, 0x1ff
cmp dword [0x428458], 2
sete cl
shr edx, 0x12
and dl, cl
movzx ecx, dl
mov dl, byte [0x42845c]
or ecx, eax
mov ebx, ecx
or ebx, 2
test dl, dl
cmove ebx, ecx
test ebp, 0x80000
cmove ebx, ecx
mov ecx, ebx
call fcn.0048b775
xor eax, eax
cmp dword [ebx*4 + 0x428460], eax
jne 0x48aca3
mov ecx, dword [esp + 0x38]
xor eax, eax
inc eax
test bl, 2
cmovne ecx, eax
and ebx, 0xfffffffc
mov dword [esp + 0x38], ecx
mov ecx, ebx
call fcn.0048b775
mov eax, dword [ebx*4 + 0x428460]
mov edx, dword [esp + 4]
mov ebp, dword [esp + 0xc8]
test eax, eax
mov ecx, edx
cmove ebx, eax
and ecx, 0x100000
mov eax, esi
cmove eax, edi
test ecx, ecx
mov ecx, dword [0x428560]
cmove edi, esi
cmp dword [esp], 0
jne 0x48ad03
and edx, 0x40000
je 0x48ad03
test ecx, ecx
mov edx, edi
je 0x48ad05
cmp eax, 0xf
ja 0x48acf7
or eax, 8
jmp 0x48ad05
xor edx, edx
cmp eax, 0xff
seta dl
or eax, edx
mov edx, edi
test dword [esp + 4], 0x200000
je 0x48ad2a
test ecx, ecx
je 0x48ad2a
cmp edx, 0xf
ja 0x48ad1d
or edx, 8
jmp 0x48ad2a
xor ecx, ecx
cmp edx, 0xff
seta cl
or edx, ecx
mov esi, dword [eax*4 + 0x428564]
mov eax, dword [edx*4 + 0x428564]
mov dword [esp], eax
push dword [ebx*4 + 0x428460]
mov edi, dword [esp + 0xc0]
push edi
call dword [sym.imp.GDI32.dll_SelectObject]
mov dword [esp + 0x5c], esi
push esi
push edi
call dword [sym.imp.GDI32.dll_SetTextColor]
push dword [esp]
push edi
call dword [sym.imp.GDI32.dll_SetBkColor]
cmp dword [esp + 4], 0
js 0x48ad72
push 2
push edi
jmp 0x48ad75
push 1
push edi
call dword [sym.imp.GDI32.dll_SetBkMode]
mov ebx, dword [esp + 0xcc]
mov esi, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + 0x3c]
imul esi, ebx
mov dword [esp + 0x70], ecx
mov edx, eax
add esi, ecx
mov ecx, dword [0x4283d8]
mov dword [esp + 0x74], edx
mov dword [esp + 0x78], esi
add ecx, edx
test ebx, ebx
mov dword [esp + 0x7c], ecx
jle 0x48ae5a
xor ecx, ecx
xor eax, eax
xor edx, edx
mov di, word [ebp + edx*2]
lea esi, [edx + 1]
cmp esi, ebx
jge 0x48ae28
movzx ebx, di
cmp ebx, 0xdb40
jne 0x48adf1
movzx ebx, word [ebp + edx*2 + 2]
add ebx, 0x2300
movzx ebx, bx
cmp ebx, 0xf0
mov ebx, dword [esp + 0xcc]
jae 0x48ae08
jmp 0x48ae4d
mov ebx, edi
and ebx, 0xfc00
cmp ebx, 0xd800
mov ebx, dword [esp + 0xcc]
jne 0x48ae28
movzx ebx, word [ebp + edx*2 + 2]
and ebx, 0xfc00
cmp ebx, 0xdc00
mov ebx, dword [esp + 0xcc]
jne 0x48ae28
add eax, dword [esp + 0x10]
jmp 0x48ae4d
lea esi, [edi - 0x180b]
movzx esi, si
cmp esi, 3
jb 0x48ae4b
mov esi, dword [esp + 0x10]
and edi, 0xfff0
cmp edi, 0xfe00
cmove esi, ecx
add eax, esi
mov esi, edx
inc esi
cmp esi, ebx
mov edx, esi
jl 0x48adbb
jmp 0x48ae5c
xor eax, eax
add eax, dword [esp + 0x14]
mov ecx, dword [0x428ea4]
mov dword [esp + 0x78], eax
mov ecx, dword [ecx + 0x12c]
imul ecx, dword [0x4283d4]
add ecx, dword [0x4283e8]
cmp eax, ecx
jle 0x48ae85
mov dword [esp + 0x78], ecx
cmp byte [0x42897c], 1
jne 0x48aebf
mov eax, dword [esp + 0x10]
mov ecx, eax
shr ecx, 0x1f
add ecx, eax
sar ecx, 1
mov dword [esp + 0x24], ecx
push 6
push dword [esp + 0xc0]
call dword [sym.imp.GDI32.dll_SetTextAlign]
xor eax, eax
mov dword [esp + 0xc], 0
inc eax
mov dword [esp + 0x44], eax
jmp 0x48aee3
push 0
push dword [esp + 0xc0]
call dword [sym.imp.GDI32.dll_SetTextAlign]
mov eax, dword [0x428450]
mov dword [esp + 0x24], 0
mov dword [esp + 0x44], ebx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0x2c]
test ebx, ebx
jle 0x48b6d1
test eax, eax
mov eax, dword [esp + 0x3c]
setns byte [esp + 0x23]
lea eax, [ecx + eax]
mov dword [esp + 0x28], eax
xor eax, eax
inc eax
mov edx, dword [esp + 0x44]
mov ecx, ebx
mov edi, ebx
mov dword [esp + 0x18], eax
cmp edx, ebx
cmovle ecx, edx
cmp edx, 1
mov ebx, ecx
mov dword [esp + 0x64], ecx
jne 0x48afaf
movzx eax, word [ebp]
mov ebx, ecx
and eax, 0xfc00
cmp eax, 0xd800
jne 0x48af4f
movzx eax, word [ebp + 2]
xor ebx, ebx
and eax, 0xfc00
cmp eax, 0xdc00
sete bl
add ebx, ecx
mov eax, edi
sub eax, ebx
jle 0x48afaf
movzx ecx, word [ebp + ebx*2]
mov esi, ebx
lea edx, [ecx - 0x180b]
movzx edx, dx
cmp edx, 3
jb 0x48afa8
mov edx, ecx
and edx, 0xfff0
movzx edx, dx
cmp edx, 0xfe00
je 0x48afa8
cmp eax, 2
jl 0x48afad
movzx eax, cx
cmp eax, 0xdb40
jne 0x48afad
mov ebx, esi
movzx eax, word [ebp + ebx*2 + 2]
lea ecx, [ebx + 2]
add eax, 0x2300
movzx eax, ax
cmp eax, 0xf0
cmovb ebx, ecx
jmp 0x48afaf
mov ebx, esi
inc ebx
jmp 0x48afaf
mov ebx, esi
cmp ebx, dword [0x428454]
mov dword [esp + 0x30], edi
jle 0x48aff7
lea eax, [ebx + ebx*8]
mov ecx, eax
sar ecx, 0x1f
shr ecx, 0x1d
add ecx, eax
sar ecx, 3
add ecx, 0x10
mov dword [0x428454], ecx
push 4
push ecx
push dword [0x428450]
call fcn.0043f8db
add esp, 0xc
mov ecx, dword [esp + 0xc]
mov dword [0x428450], eax
test ecx, ecx
cmovne ecx, eax
mov dword [esp + 0xc], ecx
test ebx, ebx
mov dword [esp + 0x1c], ebp
mov dword [esp], ebx
jle 0x48b0d0
mov eax, dword [0x428450]
xor ecx, ecx
mov edx, dword [esp + 0x10]
mov dword [eax + ecx*4], edx
lea edx, [ecx + 1]
cmp edx, ebx
mov bx, word [ebp + ecx*2]
jge 0x48b087
movzx ebp, bx
lea esi, [eax + ecx*4]
cmp ebp, 0xdb40
jne 0x48b058
mov edi, dword [esp + 0x1c]
movzx ebp, word [edi + ecx*2 + 2]
add ebp, 0x2300
movzx ebp, bp
cmp ebp, 0xef
mov ebp, edi
ja 0x48b06c
test ecx, ecx
jle 0x48b0b5
mov dword [eax + ecx*4 - 4], 0
jmp 0x48b0b5
mov ebp, ebx
and ebp, 0xfc00
cmp ebp, 0xd800
mov ebp, dword [esp + 0x1c]
jne 0x48b087
mov edi, dword [esp + 0x1c]
movzx ebp, word [edi + ecx*2 + 2]
and ebp, 0xfc00
cmp ebp, 0xdc00
mov ebp, dword [esp + 0x1c]
je 0x48b0b5
lea edx, [ebx - 0x180b]
movzx edx, dx
cmp edx, 3
jb 0x48b0ab
and ebx, 0xfff0
movzx edx, bx
cmp edx, 0xfe00
je 0x48b0ab
mov ebx, dword [esp]
jmp 0x48b0c7
test ecx, ecx
jle 0x48b0bd
lea esi, [eax + ecx*4 - 4]
mov edx, ecx
mov ecx, edx
mov dword [esi], 0
mov ebx, dword [esp]
mov edx, dword [esp + 0x10]
mov dword [eax + ecx*4], edx
inc ecx
cmp ecx, ebx
jl 0x48b00d
movzx eax, word [ebp]
cmp dword [0x4278c8], 0
je 0x48b2a4
mov ecx, eax
and ecx, 0xff00
movzx ecx, cx
cmp ecx, 0xf100
jne 0x48b2a4
cmp ebx, dword [0x428984]
jle 0x48b124
push dword [0x428980]
call fcn.0043f9d4
add esp, 4
mov dword [0x428984], ebx
push 2
push ebx
call fcn.0043f807
add esp, 8
mov dword [0x428980], eax
test ebx, ebx
jle 0x48b75e
xor ebx, ebx
xor ebp, ebp
xor esi, esi
mov eax, dword [0x428980]
mov word [eax + esi*2], 0xfffd
mov edi, dword [esp + 0x1c]
movzx eax, byte [edi + ebp*2]
push eax
push dword [0x4278cc]
call dword [sym.imp.KERNEL32.dll_IsDBCSLeadByteEx]
test eax, eax
je 0x48b198
mov al, byte [edi + ebp*2]
mov ecx, dword [esp + 0x10]
mov byte [esp + 0x80], al
mov al, byte [edi + ebp*2 + 2]
inc ebp
mov byte [esp + 0x81], al
mov eax, dword [0x428450]
add dword [eax + esi*4], ecx
mov eax, dword [0x428980]
add eax, ebx
xor ecx, ecx
inc ecx
push ecx
push eax
push 2
lea eax, [esp + 0x8c]
push eax
push 4
push dword [0x4278cc]
jmp 0x48b1bf
mov al, byte [edi + ebp*2]
mov byte [esp + 0x80], al
mov eax, dword [0x428980]
add eax, ebx
xor ecx, ecx
inc ecx
push ecx
push eax
push ecx
lea eax, [esp + 0x8c]
push eax
push 4
push dword [0x4278cc]
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
inc ebp
inc esi
add ebx, 2
cmp ebp, dword [esp]
jl 0x48b132
mov eax, esi
dec eax
js 0x48b75e
xor eax, eax
cmp dword [esp + 0x18], 0
mov edx, 0
mov edi, dword [esp + 0x24]
setne al
xor ecx, ecx
sub ecx, dword [0x4283d8]
cmp dword [esp + 8], 3
lea eax, [eax + eax + 4]
cmovne ecx, edx
mov edx, dword [esp + 0x14]
add ecx, dword [esp + 0x28]
lea edi, [edx + edi]
push dword [esp + 0xc]
push esi
push dword [0x428980]
lea edx, [esp + 0x7c]
push edx
push eax
push ecx
push edi
push dword [esp + 0xd8]
call dword [sym.imp.GDI32.dll_ExtTextOutW]
test dword [esp + 4], 0x40000
mov ebp, dword [esp + 0x1c]
mov ebx, dword [esp + 0x30]
je 0x48b294
cmp dword [0x428458], 1
jne 0x48b294
push 1
mov eax, dword [esp + 0xc0]
push eax
call dword [sym.imp.GDI32.dll_SetBkMode]
xor eax, eax
mov ecx, 0
sub eax, dword [0x4283d8]
cmp dword [esp + 8], 3
cmovne eax, ecx
dec edi
add eax, dword [esp + 0x28]
push dword [esp + 0xc]
push esi
push dword [0x428980]
lea ecx, [esp + 0x7c]
push ecx
push 4
push eax
push edi
push dword [esp + 0xd8]
call dword [sym.imp.GDI32.dll_ExtTextOutW]
mov eax, dword [0x428450]
mov dword [eax], 0xffffffff
jmp 0x48b6a4
and eax, 0xfe00
cmp eax, 0xf000
jne 0x48b3b1
cmp ebx, dword [0x42898c]
jle 0x48b2d8
mov dword [0x42898c], ebx
push 1
push ebx
push dword [0x428988]
call fcn.0043f8db
add esp, 0xc
mov dword [0x428988], eax
mov eax, dword [0x428988]
test ebx, ebx
jle 0x48b2f3
mov ecx, dword [esp]
mov edx, eax
mov esi, ebp
mov bl, byte [esi]
add esi, 2
mov byte [edx], bl
inc edx
dec ecx
jne 0x48b2e8
xor ecx, ecx
cmp dword [esp + 0x18], 0
mov edx, dword [0x4283d8]
mov esi, 0
mov edi, dword [esp + 0x24]
setne cl
neg edx
cmp dword [esp + 8], 3
lea ecx, [ecx + ecx + 4]
cmovne edx, esi
mov esi, dword [esp + 0x14]
add edx, dword [esp + 0x28]
lea esi, [esi + edi]
push dword [esp + 0xc]
push dword [esp + 4]
push eax
lea eax, [esp + 0x7c]
push eax
push ecx
push edx
push esi
push dword [esp + 0xd8]
call dword [sym.imp.GDI32.dll_ExtTextOutA]
test dword [esp + 4], 0x40000
mov ebx, dword [esp + 0x30]
je 0x48b6a4
cmp dword [0x428458], 1
jne 0x48b6a4
push 1
mov eax, dword [esp + 0xc0]
mov edi, eax
push edi
call dword [sym.imp.GDI32.dll_SetBkMode]
xor eax, eax
mov ecx, 0
sub eax, dword [0x4283d8]
cmp dword [esp + 8], 3
cmovne eax, ecx
dec esi
add eax, dword [esp + 0x28]
push dword [esp + 0xc]
push dword [esp + 4]
push dword [0x428988]
lea ecx, [esp + 0x7c]
push ecx
push 4
push eax
push esi
push edi
call dword [sym.imp.GDI32.dll_ExtTextOutA]
jmp 0x48b6a4
cmp dword [0x428994], ebx
jge 0x48b3dd
push dword [0x428990]
call fcn.0043f9d4
add esp, 4
mov dword [0x428994], ebx
push 2
push ebx
call fcn.0043f807
add esp, 8
mov dword [0x428990], eax
test ebx, ebx
mov ebx, dword [esp + 0x30]
jle 0x48b63b
mov edx, dword [0x428990]
mov esi, dword [esp]
xor eax, eax
movzx ecx, word [ebp + eax*2]
mov word [edx + eax*2], cx
inc eax
cmp esi, eax
jne 0x48b3f4
mov dword [esp + 0x40], edx
cmp dword [esp + 8], 3
mov eax, dword [0x4283d8]
mov edi, dword [esp + 0x14]
mov edx, dword [esp + 0x24]
mov ecx, 0
cmovne eax, ecx
lea edi, [edi + edx]
test esi, esi
jle 0x48b646
mov ecx, dword [esp + 0x3c]
mov esi, dword [esp]
mov ebx, edi
mov dword [esp + 0x60], edi
sub ecx, eax
mov eax, dword [0x428450]
add ecx, dword [esp + 0x2c]
cmp dword [esp + 0x18], 0
mov dword [esp + 0x58], eax
setne al
xor ebp, ebp
mov dword [esp + 0x48], ecx
and al, byte [esp + 0x23]
movzx eax, al
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x40]
movzx eax, word [eax + ebp*2]
push eax
call fcn.0043d85d
add esp, 4
mov edi, eax
mov eax, dword [esp + 0x58]
lea ecx, [eax + ebp*4]
mov eax, ebx
mov dword [esp + 0x18], ecx
mov ebx, dword [ecx]
mov dword [esp + 0x34], ebp
inc ebp
mov dword [esp + 0x54], eax
add ebx, eax
cmp ebp, esi
jge 0x48b4b5
mov esi, dword [esp + 0x40]
movzx eax, word [esi + ebp*2]
push eax
call fcn.0043d85d
add esp, 4
cmp edi, eax
jne 0x48b4b9
mov eax, dword [esp + 0x58]
add ebx, dword [eax + ebp*4]
inc ebp
cmp ebp, dword [esp]
jl 0x48b495
jmp 0x48b4b9
mov esi, dword [esp + 0x40]
mov al, byte [0x42897c]
mov ecx, dword [esp + 0x18]
mov edx, ebp
test al, al
mov eax, 0
cmovne ecx, eax
mov eax, dword [esp + 0x34]
sub edx, eax
test edi, edi
lea esi, [esi + eax*2]
je 0x48b5cf
xor eax, eax
mov dword [esp + 0x6c], esi
lea edi, [edx + edx + 2]
inc eax
push eax
push edi
mov esi, edx
mov dword [esp + 0x20], ecx
mov dword [esp + 0x54], esi
call fcn.0043f807
add esp, 8
mov dword [esp + 0x34], eax
xor eax, eax
inc eax
push eax
push esi
call fcn.0043f807
add esp, 8
mov dword [esp + 0x68], eax
lea eax, [esp + 0x84]
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 edi
push ecx
mov esi, dword [esp + 0x3c]
push esi
call fcn.0049acf0
add esp, 0xc
push dword [esp + 0x4c]
push 3
mov edi, dword [esp + 0x70]
push edi
call fcn.0049acf0
add esp, 0xc
mov dword [esp + 0x80], 0x24
mov dword [esp + 0x98], esi
mov esi, dword [esp + 0x4c]
mov dword [esp + 0x94], edi
mov dword [esp + 0x9c], esi
push 0x8113b
lea eax, [esp + 0x84]
push eax
mov eax, 0
push eax
push esi
mov edi, esi
push dword [esp + 0x7c]
mov esi, dword [esp + 0xd0]
push esi
call dword [sym.imp.GDI32.dll_GetCharacterPlacementW]
xor eax, eax
cmp dword [esp + 0x50], 0
setne al
lea eax, [eax + eax + 0x14]
push dword [esp + 0x18]
push edi
push dword [esp + 0x3c]
lea ecx, [esp + 0x7c]
push ecx
push eax
push dword [esp + 0x5c]
push dword [esp + 0x6c]
push esi
call dword [sym.imp.GDI32.dll_ExtTextOutA]
jmp 0x48b5fc
xor eax, eax
cmp dword [esp + 0x50], 0
setne al
lea eax, [eax + eax + 4]
push ecx
push edx
push esi
lea ecx, [esp + 0x7c]
push ecx
push eax
push dword [esp + 0x5c]
push dword [esp + 0x6c]
mov esi, dword [esp + 0xd8]
push esi
call dword [sym.imp.GDI32.dll_ExtTextOutW]
push esi
call dword [sym.imp.GDI32.dll_GetBkMode]
mov edi, eax
push 1
push esi
call dword [sym.imp.GDI32.dll_SetBkMode]
mov esi, dword [esp]
xor eax, eax
cmp ebp, esi
jl 0x48b45c
push edi
push dword [esp + 0xc0]
call dword [sym.imp.GDI32.dll_SetBkMode]
mov eax, dword [esp + 4]
mov ebp, dword [esp + 0x1c]
mov ebx, dword [esp + 0x30]
mov edi, dword [esp + 0x60]
jmp 0x48b64a
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0x24]
lea edi, [eax + ecx]
mov eax, dword [esp + 4]
test eax, 0x40000
je 0x48b6a4
cmp dword [0x428458], 1
jne 0x48b6a4
push 1
mov eax, dword [esp + 0xc0]
mov esi, eax
push esi
call dword [sym.imp.GDI32.dll_SetBkMode]
xor eax, eax
mov ecx, 0
sub eax, dword [0x4283d8]
cmp dword [esp + 8], 3
cmovne eax, ecx
dec edi
add eax, dword [esp + 0x28]
push dword [esp + 0xc]
push dword [esp + 4]
push dword [0x428990]
lea ecx, [esp + 0x7c]
push ecx
push 4
push eax
push edi
push esi
call dword [sym.imp.GDI32.dll_ExtTextOutW]
push 1
push dword [esp + 0xc0]
call dword [sym.imp.GDI32.dll_SetBkMode]
mov eax, dword [esp + 0x64]
mov ecx, dword [esp]
imul eax, dword [esp + 0x10]
lea ebp, [ebp + ecx*2]
add dword [esp + 0x14], eax
xor eax, eax
sub ebx, ecx
jg 0x48af08
cmp dword [esp + 8], 2
je 0x48b75e
test dword [esp + 4], 0x80000
sete al
cmp dword [esp + 0x38], 0
jne 0x48b6f8
or al, byte [0x42845c]
test al, 1
jne 0x48b75e
mov edi, dword [0x428998]
cmp dword [esp + 8], 3
jne 0x48b70d
add edi, edi
sub edi, dword [0x4283d8]
xor ebp, ebp
push dword [esp + 0x5c]
push ebp
push ebp
call dword [sym.imp.GDI32.dll_CreatePen]
push eax
mov ebx, dword [esp + 0xc0]
push ebx
call dword [sym.imp.GDI32.dll_SelectObject]
mov esi, eax
mov eax, dword [esp + 0x74]
add eax, edi
push ebp
push eax
push dword [esp + 0x78]
push ebx
call dword [sym.imp.GDI32.dll_MoveToEx]
add edi, dword [esp + 0x74]
push edi
push dword [esp + 0x7c]
push ebx
call dword [sym.imp.GDI32.dll_LineTo]
push esi
push ebx
call dword [sym.imp.GDI32.dll_SelectObject]
push eax
call dword [sym.imp.GDI32.dll_DeleteObject]
mov ecx, dword [esp + 0xa4]
call fcn.00497c4a
add esp, 0xa8
pop esi
pop edi
pop ebx
pop ebp
ret
push ebp
push ebx
push edi
push esi
sub esp, 0x14
mov esi, dword [esp + 0x3c]
test esi, esi
js 0x48b8a8
add esp, 0x14
pop esi
pop edi
pop ebx
pop ebp
jmp 0x48aa2a
mov eax, dword [esp + 0x40]
xor ecx, ecx
inc ecx
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x30]
mov ebx, dword [esp + 0x38]
mov ebp, dword [esp + 0x34]
mov dword [esp + 8], eax
cmp ebx, 2
mov eax, dword [esp + 0x2c]
mov dword [esp + 4], eax
mov edi, dword [esp + 0x28]
jl 0x48b8f8
movzx eax, word [ebp]
and eax, 0xfc00
cmp eax, 0xd800
jne 0x48b8f8
movzx eax, word [ebp + 2]
xor ecx, ecx
and eax, 0xfc00
cmp eax, 0xdc00
sete cl
inc ecx
mov eax, ebx
sub eax, ecx
jle 0x48b97b
mov dword [esp], ecx
movzx ecx, word [ebp + ecx*2]
lea edx, [ecx - 0x180b]
movzx edx, dx
cmp edx, 3
jb 0x48b988
mov edx, ecx
and edx, 0xfff0
movzx edx, dx
cmp edx, 0xfe00
je 0x48b988
mov edx, dword [esp]
cmp eax, 2
jl 0x48b97b
movzx eax, cx
cmp eax, 0xdb40
jne 0x48b97b
movzx eax, word [ebp + edx*2 + 2]
add eax, 0x2300
movzx eax, ax
cmp eax, 0xef
ja 0x48b97b
and esi, 0x7fffffff
lea eax, [edx + 2]
mov dword [esp + 0x10], eax
push dword [esp + 0xc]
push esi
push eax
push ebp
push dword [esp + 0x18]
push dword [esp + 0x18]
push edi
call 0x48aa2a
add esp, 0x1c
mov eax, dword [esp]
lea ebp, [ebp + eax*2 + 4]
jmp 0x48b9b5
and esi, 0x7fffffff
xor eax, eax
jmp 0x48ba30
mov eax, dword [esp]
and esi, 0x7fffffff
inc eax
mov dword [esp + 0x10], eax
push dword [esp + 0xc]
push esi
push eax
push ebp
push dword [esp + 0x18]
push dword [esp + 0x18]
push edi
call 0x48aa2a
add esp, 0x1c
mov eax, dword [esp]
lea ebp, [ebp + eax*2 + 2]
sub ebx, dword [esp + 0x10]
mov eax, 0x80000000
jmp 0x48ba30
cmp ebx, 2
jl 0x48ba0c
movzx ecx, word [ebp]
and ecx, 0xfc00
cmp ecx, 0xd800
jne 0x48ba0c
movzx ecx, word [ebp + 2]
and ecx, 0xfc00
cmp ecx, 0xdc00
jne 0x48ba0c
or eax, esi
push dword [esp + 0xc]
push eax
push 2
push ebp
lea ebp, [ebp + 2]
push dword [esp + 0x18]
push dword [esp + 0x18]
push edi
call 0x48aa2a
add esp, 0x1c
add ebx, 0xfffffffe
jmp 0x48ba28
dec ebx
or eax, esi
push dword [esp + 0xc]
push eax
push 1
push ebp
push dword [esp + 0x18]
push dword [esp + 0x18]
push edi
call 0x48aa2a
add esp, 0x1c
add ebp, 2
mov eax, 0x80000000
test ebx, ebx
jne 0x48b9c0
add esp, 0x14
pop esi
pop edi
pop ebx
pop ebp
ret