Function at 0x628f6c
Capabilities:
Check for unmoving mouse cursor
Resolve function by parsing pe exports

Disassembly:
test dword [0x7eeab0], 0xfffffe00
jne 0x628fa4
test dword [0x7eeab0], 0xffffff80
jne 0x629c48
test dword [0x7eeab0], 0xffffffff
jne 0x62a8d8
call fcn.006a7b4c
jmp fcn.00628f6c
push ebp
mov ebp, esp
and esp, 0xfffffff0
push edi
push esi
push ebx
push ecx
mov eax, 0x90
call fcn.00697340
mov ecx, dword [esp + 0x90]
mov edi, ecx
mov ebx, dword [ebp + 8]
movsx eax, word [ebx + 0x5f]
test eax, eax
je 0x62960e
mov eax, dword [ebx + 0x41]
test eax, eax
je 0x628fe0
mov eax, dword [eax + 0x4e]
mov dword [esp + 0x78], eax
jmp 0x628fe6
xor eax, eax
mov dword [esp + 0x78], eax
mov esi, dword [edi + 0x1c]
lea edx, [ebx + 0x6b]
lea eax, [ebx + 0x6d]
push eax
push edx
push dword [ebx + 0x49]
mov ecx, dword [esi + 2]
call fcn.00529108
cmp dword [ebx + 0x41], 0
je 0x62961d
mov eax, dword [ebp + 0x18]
test eax, eax
jne 0x629022
mov eax, dword [esp + 0x78]
test eax, eax
jne 0x629022
movsx eax, word [ebx + 0x5d]
cmp eax, 1
je 0x62961d
mov eax, dword [0x6db280]
mov dword [esp + 0x18], eax
mov edx, dword [0x6db284]
mov dword [esp + 0x1c], edx
mov esi, dword [0x6db288]
mov dword [esp + 0x50], esi
mov eax, dword [0x6db28c]
mov dword [esp + 0x54], eax
mov eax, dword [edi + 0x1c]
push 0
mov ecx, dword [eax + 2]
call fcn.00529094
mov eax, dword [edi + 0x1c]
mov ecx, dword [eax + 2]
call fcn.00529a6c
mov dword [esp + 0x24], eax
mov eax, dword [ebx + 0x41]
mov edx, dword [eax]
mov dword [esp + 0x30], edx
movsx ecx, word [ebx + 0x5d]
cmp ecx, 1
jle 0x629082
mov eax, dword [ebx + 0x75]
cmp eax, 4
je 0x62970e
mov esi, 1
movzx eax, word [0x7e9224]
mov word [ebx + 0x6f], ax
movzx edx, word [0x7e9220]
mov word [ebx + 0x6f], dx
mov ecx, dword [edi + 0x1c]
mov eax, dword [ecx + 2]
mov eax, dword [eax + 4]
mov dword [esp + 0x2c], eax
mov eax, dword [ebx + 0x75]
cmp eax, 2
jne 0x6290bd
mov eax, 2
mov dword [esp + 0x74], eax
jmp 0x6290d1
mov edx, 3
cmp eax, 3
mov eax, 1
cmove eax, edx
mov dword [esp + 0x74], eax
mov eax, dword [edi + 0x61]
mov dword [esp + 0x80], eax
mov edx, dword [ebx + 0x31]
mov dword [esp + 0x70], edx
mov ecx, dword [ebx + 0x41]
mov eax, dword [ecx + 8]
mov dword [esp + 0x34], eax
movzx eax, byte [ebx + 0x84]
test al, 0x40
je 0x629117
mov eax, dword [esp + 0x24]
shl eax, 0x10
mov dword [esp + 0x20], eax
test eax, eax
je 0x62911d
sar eax, 0x10
push eax
mov edx, dword [esp + 0x30]
push edx
call dword [sym.imp.GDI32.dll_SetTextCharacterExtra]
jmp 0x62911d
xor eax, eax
mov dword [esp + 0x20], eax
mov eax, dword [ebp + 0x18]
test eax, eax
je 0x62912f
movzx eax, byte [edi + 0x89]
test al, 4
jne 0x62913d
movsx edx, word [ebx + 0x5d]
mov eax, 0xffffffff
jmp 0x6291ea
lea eax, [esp + 0x18]
push eax
call dword [sym.imp.USER32.dll_GetCursorPos]
movsx edx, word [ebx + 0x5d]
test edx, edx
jle 0x629776
xor eax, eax
mov dword [esp + 0x28], esi
mov dword [esp + 0x7c], edi
mov esi, eax
lea edi, [esp]
push esi
push edx
mov edx, dword [ebp + 0x14]
push edx
push edi
mov ecx, dword [ebp + 0x10]
call fcn.0054b91c
mov edi, dword [ebp + 0xc]
mov ecx, dword [edi + 0xc]
mov edx, dword [ecx + 0xc]
add dword [esp], edx
mov edx, dword [ecx + 0xc]
add dword [esp + 8], edx
mov edx, dword [esp + 0xc]
add edx, dword [ecx + 0x10]
mov dword [esp + 0xc], edx
mov eax, dword [esp + 4]
add eax, dword [ecx + 0x10]
mov dword [esp + 4], eax
mov edi, dword [ecx + 0x1c]
movzx edi, word [edi]
sub edi, eax
movzx edi, di
mov dword [esp + 4], edi
mov ecx, dword [ecx + 0x1c]
movzx ecx, word [ecx]
sub ecx, edx
movzx edx, cx
mov dword [esp + 0xc], edx
lea edx, [esp]
push dword [esp + 0x1c]
push dword [esp + 0x1c]
push edx
call dword [sym.imp.USER32.dll_PtInRect]
cmp eax, 1
je 0x62975c
inc esi
movsx edx, word [ebx + 0x5d]
cmp esi, edx
jl 0x629160
mov esi, dword [esp + 0x28]
mov edi, dword [esp + 0x7c]
mov eax, 0xffffffff
mov ecx, dword [ebx + 0x2d]
movsx ecx, word [ecx + 0x7b]
cmp ecx, edx
cmovl ecx, edx
mov dword [esp + 0x6c], ecx
test edx, edx
jle 0x6295f9
mov edx, 1
xor ecx, ecx
mov dword [esp + 0x68], ecx
mov dword [esp + 0x58], edx
mov dword [esp + 0x5c], eax
mov dword [esp + 0x28], esi
mov dword [esp + 0x7c], edi
mov ebx, dword [esp + 0x30]
lea edi, [esp + 0x38]
mov eax, dword [esp + 0x68]
push eax
mov edx, dword [esp + 0x70]
push edx
mov esi, dword [ebp + 0x14]
push esi
push edi
mov ecx, dword [ebp + 0x10]
call fcn.0054b91c
mov ecx, dword [ebp + 0xc]
mov edx, dword [ecx + 0xc]
mov eax, dword [edx + 0xc]
add dword [esp + 0x38], eax
mov eax, dword [edx + 0xc]
add dword [esp + 0x40], eax
mov eax, dword [esp + 0x44]
add eax, dword [edx + 0x10]
mov dword [esp + 0x44], eax
mov esi, dword [esp + 0x3c]
add esi, dword [edx + 0x10]
mov dword [esp + 0x3c], esi
mov ecx, dword [edx + 0x1c]
movzx ecx, word [ecx]
sub ecx, esi
movzx ecx, cx
mov dword [esp + 0x3c], ecx
mov edx, dword [edx + 0x1c]
movzx edx, word [edx]
sub edx, eax
movzx eax, dx
mov dword [esp + 0x44], eax
movzx eax, word [0x7e9220]
mov dword [esp + 0x60], eax
mov esi, dword [esp + 0x80]
mov edi, dword [esp + 0x70]
mov dl, byte [edi]
inc edi
mov byte [esi], dl
inc esi
test dl, dl
jne 0x62929a
mov eax, dword [esp + 0x78]
test eax, eax
je 0x6292ca
mov edi, dword [esp + 0x80]
mov edx, 0x20
xor eax, eax
cmp byte [edi + eax], 0
je 0x6292c8
mov byte [edi + eax], dl
add eax, 1
jmp 0x6292ba
mov eax, edi
mov eax, dword [ebp + 0x18]
test eax, eax
je 0x629304
mov eax, dword [esp + 0x58]
test eax, eax
je 0x6292f8
mov eax, dword [ebp + 8]
mov edi, dword [eax + 0x21]
mov esi, dword [ebp + 0x18]
push esi
mov ecx, dword [esp + 0x84]
mov edx, dword [edi + 0x6a]
call fcn.004f727c
xor eax, eax
mov dword [esp + 0x58], eax
mov eax, dword [ebp + 0x18]
cmp eax, 1
je 0x629780
mov edx, dword [ebx]
cmp edx, 0xffffffff
je 0x629780
mov esi, dword [ebx + 8]
test esi, esi
je 0x629330
mov eax, esi
and eax, 0xffff0000
sar eax, 0x10
push 1
push eax
mov edx, dword [esp + 0x34]
push edx
call dword [sym.imp.GDI32.dll_SetTextJustification]
mov edx, dword [ebx]
mov eax, dword [esp + 0x7c]
mov ecx, dword [eax + 0x1c]
push dword [eax + 0x65]
mov edi, dword [esp + 0x84]
push edi
push edx
mov ecx, dword [ecx + 2]
lea edx, [esp + 0x5c]
call fcn.00529cc4
lea edi, [ebx + 0xc]
mov eax, dword [ebx]
mov dword [esp + 0x84], eax
movzx edx, word [edi]
cmp edx, 0x2710
je 0x6293bd
mov eax, dword [esp + 0x7c]
mov edx, dword [eax + 0x1c]
push edi
mov ecx, dword [edx + 2]
call fcn.00529094
mov eax, dword [esp + 0x84]
test eax, eax
jb 0x6293bd
xor eax, eax
mov dword [esp + 0x64], esi
mov dword [esp + 0x30], ebx
mov ebx, edi
mov edi, eax
mov esi, dword [esp + 0x7c]
mov edx, dword [esi + 0x65]
push dword [edx + edi*4]
mov ecx, ebx
call fcn.0054c938
movsx edx, ax
mov ecx, dword [esi + 0x65]
mov dword [ecx + edi*4], edx
inc edi
mov edx, dword [esp + 0x84]
cmp edi, edx
jbe 0x629393
mov esi, dword [esp + 0x64]
mov ebx, dword [esp + 0x30]
mov edi, dword [ebx + 4]
cmp dword [ebx + 0xe], 0
je 0x6293d2
mov eax, dword [esp + 0x80]
mov byte [edi + eax - 1], 0x2d
mov eax, dword [esp + 0x84]
add dword [esp + 0x70], eax
mov edx, dword [ebp + 0x18]
test edx, edx
je 0x629434
mov eax, dword [esp + 0x5c]
mov edx, dword [esp + 0x68]
cmp eax, edx
jne 0x629434
mov eax, dword [esp + 0x84]
test eax, eax
jbe 0x629434
mov edx, dword [esp + 0x18]
mov dword [esp + 0x48], edx
mov eax, dword [esp + 0x7c]
mov edx, dword [eax + 0x65]
xor ecx, ecx
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x30], ebx
mov eax, dword [esp + 0x48]
mov ebx, dword [esp + 0x84]
cmp eax, dword [edx + ecx*4 + 4]
jl 0x629bd3
inc ecx
cmp ecx, ebx
jb 0x62941f
mov ebx, dword [esp + 0x30]
jmp 0x62943b
mov eax, dword [esp + 0x7c]
mov edx, dword [eax + 0x65]
mov dword [esp + 0x64], esi
mov esi, dword [esp + 0x7c]
mov eax, dword [esi + 0x1c]
mov ecx, dword [ebp + 0x1c]
push ecx
mov ecx, dword [esp + 0x78]
push ecx
push dword [edx + edi*4]
lea edx, [esp + 0x44]
push edx
mov edx, dword [esp + 0x90]
push edx
push edi
mov ecx, dword [eax + 2]
mov esi, dword [esp + 0x7c]
call fcn.005cdec0
mov eax, dword [esp + 0x38]
test eax, eax
jl 0x6294a6
cmp eax, dword [esp + 0x40]
jge 0x6294a6
mov eax, dword [esp + 0x7c]
mov edx, dword [eax + 0x1c]
movzx ecx, byte [edx + 0x5e]
test cl, 2
je 0x6294a6
mov dword [esp + 0x64], esi
mov esi, dword [ebp + 0xc]
lea edx, [esi + 0x4c]
lea eax, [esp + 0x38]
push eax
push edx
mov ecx, dword [esi + 0x10]
mov esi, dword [esp + 0x6c]
call fcn.0059a0d4
mov eax, dword [ebp + 0x1c]
test eax, eax
jne 0x6295cb
mov eax, dword [ebp + 0x18]
test eax, eax
je 0x6295cb
mov eax, dword [esp + 0x34]
test eax, eax
jl 0x6295bc
mov edx, dword [esp + 0x84]
cmp eax, edx
jl 0x6294ea
cmp eax, edx
jne 0x6295bc
mov eax, dword [esp + 0x70]
movsx edx, byte [eax]
test edx, edx
jne 0x6295bc
mov eax, dword [esp + 0x7c]
movzx edx, byte [eax + 0x58]
test dl, 2
jne 0x6295b3
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x41]
mov ecx, dword [edx + 0x46]
mov dword [esp + 0x48], ecx
mov eax, dword [esp + 0x7c]
mov eax, dword [eax + 0x65]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x34]
cmp eax, edi
jge 0x62952e
mov edx, eax
mov eax, dword [esp + 0x4c]
mov ecx, dword [eax + edx*4 + 4]
sub ecx, dword [eax + edx*4]
mov dword [esp + 0x14], ecx
jmp 0x629536
mov eax, dword [esp + 0x24]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x34]
cmp edx, edi
jle 0x629551
mov edx, dword [esp + 0x4c]
mov ecx, dword [edx + edi*4]
add ecx, eax
mov dword [esp + 0x34], ecx
jmp 0x629560
mov ecx, edx
mov edx, dword [esp + 0x4c]
mov edi, dword [edx + ecx*4]
add edi, eax
mov dword [esp + 0x34], edi
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x34]
cmp eax, edx
cmovl edx, eax
mov dword [esp + 0x34], edx
mov edi, dword [esp + 0x7c]
mov eax, dword [edi + 0x1c]
mov ecx, dword [eax + 2]
call fcn.00529a44
mov edx, dword [esp + 0x48]
test edx, edx
je 0x629592
add eax, 0xfffffffe
mov edx, dword [esp + 0x3c]
inc edx
jmp 0x6295a1
mov eax, edi
mov edx, dword [eax + 0x1c]
mov eax, dword [edx + 0x1a]
mov edx, dword [esp + 0x44]
sub edx, eax
dec edx
push eax
mov eax, dword [esp + 0x18]
push eax
push edx
mov ecx, edi
mov edx, dword [esp + 0x40]
call fcn.00529c5c
mov eax, 0xffffffff
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x34]
sub eax, dword [esp + 0x84]
mov dword [esp + 0x34], eax
test esi, esi
je 0x6295de
push 1
push 0
mov eax, dword [esp + 0x34]
push eax
call dword [sym.imp.GDI32.dll_SetTextJustification]
add ebx, 0x12
mov edx, dword [esp + 0x68]
inc edx
mov dword [esp + 0x68], edx
mov eax, dword [ebp + 8]
movsx ecx, word [eax + 0x5d]
cmp edx, ecx
jl 0x629221
mov eax, dword [esp + 0x20]
test eax, eax
je 0x62960e
push 0
mov eax, dword [esp + 0x30]
push eax
call dword [sym.imp.GDI32.dll_SetTextCharacterExtra]
add esp, 0x94
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret 0x18
lea ecx, [esp + 0x38]
mov eax, dword [ebx + 0x2d]
movsx edx, word [eax + 0x7b]
push 0
push edx
mov esi, dword [ebp + 0x14]
push esi
push ecx
mov ecx, dword [ebp + 0x10]
call fcn.0054b91c
mov dword [esp + 0x7c], edi
mov eax, dword [ebp + 0xc]
mov edi, dword [eax + 0xc]
mov eax, dword [edi + 0xc]
add dword [esp + 0x38], eax
mov eax, dword [edi + 0xc]
add dword [esp + 0x40], eax
mov esi, dword [esp + 0x44]
add esi, dword [edi + 0x10]
mov dword [esp + 0x44], esi
mov edx, dword [esp + 0x3c]
add edx, dword [edi + 0x10]
mov dword [esp + 0x3c], edx
mov eax, dword [edi + 0x1c]
movzx eax, word [eax]
sub eax, edx
movzx eax, ax
mov dword [esp + 0x3c], eax
mov eax, dword [edi + 0x1c]
movzx eax, word [eax]
sub eax, esi
movzx eax, ax
mov dword [esp + 0x44], eax
movzx edx, byte [ebx + 0x84]
and edx, 0x40
shr edx, 6
lea eax, [ebx + 0x6f]
mov ecx, dword [ebp + 0x14]
movsx edi, word [ecx + 0x18]
movzx esi, byte [ebx + 0x83]
and esi, 0x40
shr esi, 6
mov ecx, dword [ebp + 0x1c]
push ecx
push esi
push edi
push eax
push edx
push dword [ebx + 0x75]
lea eax, [esp + 0x50]
push eax
push dword [ebx + 0x31]
mov ecx, dword [ebp + 0xc]
mov edi, dword [esp + 0x9c]
call fcn.0054aa70
mov edx, dword [ebp + 0x14]
mov word [edx + 0x18], ax
mov eax, dword [esp + 0x38]
test eax, eax
jl 0x6296ff
cmp eax, dword [esp + 0x40]
jge 0x6296ff
mov eax, dword [edi + 0x1c]
movzx edx, byte [eax + 0x5e]
test dl, 2
je 0x6296ff
mov ebx, dword [ebp + 0xc]
lea edx, [ebx + 0x4c]
lea eax, [esp + 0x38]
push eax
push edx
mov ecx, dword [ebx + 0x10]
call fcn.0059a0d4
add esp, 0x94
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret 0x18
mov eax, dword [esp + 0x24]
test eax, eax
jle 0x629082
movsx eax, word [ebx + 0x5f]
mov ecx, dword [esp + 0x24]
lea esi, [ecx + ecx*4]
cdq
idiv esi
mov esi, eax
test esi, esi
jg 0x629742
movsx ecx, word [ebx + 0x5b]
mov eax, 0x66666667
imul ecx
mov esi, edx
sar esi, 1
sar ecx, 0x1f
sub esi, ecx
cmp esi, 5
jle 0x62974c
mov esi, 5
mov eax, 1
cmp esi, 0
cmovle esi, eax
jmp 0x629087
mov eax, esi
mov esi, dword [esp + 0x28]
mov edi, dword [esp + 0x7c]
mov edx, dword [esp]
sub dword [esp + 0x18], edx
movsx edx, word [ebx + 0x5d]
jmp 0x6291ea
mov eax, 0xffffffff
jmp 0x6291ea
mov ecx, dword [esp + 0x80]
xor eax, eax
movzx edx, byte [ecx + eax]
test edx, edx
je 0x62979e
movzx edx, byte [ecx + eax + 1]
add eax, 2
test edx, edx
jne 0x629789
dec eax
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], eax
test eax, eax
jne 0x6297c7
mov eax, dword [esp + 0x7c]
mov edx, dword [eax + 0x65]
mov dword [edx], 0
xor ecx, ecx
mov dword [esp + 0x84], ecx
xor esi, esi
jmp 0x629924
mov eax, dword [esp + 0x40]
sub eax, dword [esp + 0x38]
mov dword [esp + 0x64], eax
mov esi, dword [esp + 0x7c]
mov edx, dword [esi + 0x1c]
push dword [esi + 0x65]
mov edi, dword [esp + 0x84]
push edi
mov eax, dword [esp + 0x50]
push eax
mov ecx, dword [edx + 2]
lea edx, [esp + 0x5c]
call fcn.00529cc4
mov ecx, esi
mov ecx, dword [ecx + 0x65]
mov esi, dword [esp + 0x48]
mov esi, dword [ecx + esi*4]
mov eax, dword [esp + 0x64]
cmp esi, eax
jle 0x629919
mov eax, dword [ebp + 8]
movsx edi, word [eax + 0x5d]
dec edi
mov edx, dword [esp + 0x68]
cmp edx, edi
je 0x6298f8
mov eax, dword [esp + 0x64]
push eax
mov edx, dword [esp + 0x4c]
call fcn.004f6d00
mov esi, eax
mov eax, dword [esp + 0x48]
cmp esi, eax
jne 0x629859
xor eax, eax
mov dword [esp + 0x84], eax
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x75]
cmp edx, 4
je 0x62994d
xor esi, esi
jmp 0x629924
mov eax, dword [esp + 0x70]
mov dword [esp + 0x4c], eax
mov edi, dword [esp + 0x80]
xor eax, eax
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], esi
mov dword [esp + 0x30], ebx
mov ebx, eax
jmp 0x62987e
inc dword [esp + 0x10]
mov ecx, dword [esp + 0x4c]
call fcn.0062b4d0
mov esi, eax
test esi, esi
je 0x629ad9
lea ecx, [ebx + esi]
mov dword [esp + 0x48], ecx
mov eax, dword [esp + 0x14]
cmp eax, ecx
jl 0x629b6c
push esi
mov eax, dword [esp + 0x50]
push eax
push edi
call fcn.006a7d10
add esp, 0xc
add edi, esi
add esi, dword [esp + 0x4c]
mov ebx, esi
movsx eax, byte [esi]
test eax, eax
je 0x6298d0
cmp eax, 0x20
jne 0x6298d0
movsx eax, byte [ebx + 1]
inc ebx
test eax, eax
jne 0x6298c2
sub ebx, esi
push ebx
push esi
push edi
call fcn.006a7d10
add esp, 0xc
add edi, ebx
lea eax, [ebx + esi]
mov dword [esp + 0x4c], eax
add ebx, dword [esp + 0x48]
mov ecx, dword [esp + 0x14]
cmp ebx, ecx
jge 0x629ad9
jmp 0x62987a
mov ecx, dword [esp + 0x64]
imul eax, ecx, 0x2710
cdq
idiv esi
movzx esi, ax
mov dword [esp + 0x60], esi
xor edi, edi
mov dword [esp + 0x84], edi
xor esi, esi
jmp 0x629924
xor eax, eax
mov dword [esp + 0x84], eax
xor esi, esi
mov edi, dword [esp + 0x4c]
mov dword [ebx + 4], edi
mov eax, dword [esp + 0x48]
mov dword [ebx], eax
mov dword [ebx + 8], esi
lea edi, [ebx + 0xc]
mov edx, dword [esp + 0x60]
mov word [edi], dx
mov ecx, dword [esp + 0x84]
mov dword [ebx + 0xe], ecx
jmp 0x629352
mov eax, dword [esp + 0x4c]
mov edx, dword [esp + 0x70]
movsx ecx, byte [eax + edx]
test ecx, ecx
je 0x629852
mov eax, dword [esp + 0x84]
test eax, eax
je 0x62998f
mov eax, dword [esp + 0x7c]
mov edx, dword [eax + 0x1c]
push dword [eax + 0x65]
mov esi, dword [esp + 0x84]
push esi
mov edi, dword [esp + 0x54]
push edi
mov ecx, dword [edx + 2]
lea edx, [esp + 0x5c]
call fcn.00529cc4
mov eax, dword [esp + 0x7c]
mov eax, dword [eax + 0x65]
mov edx, dword [esp + 0x64]
mov ecx, dword [esp + 0x4c]
cmp edx, dword [eax + ecx*4]
jg 0x6299aa
xor esi, esi
jmp 0x629924
mov edx, dword [eax + ecx*4]
test ecx, ecx
jle 0x629a77
mov eax, ecx
cmp eax, 4
jl 0x629acc
mov eax, ecx
and eax, 3
neg eax
add eax, ecx
pxor xmm2, xmm2
mov esi, dword [esp + 0x80]
movdqa xmm1, xmmword [0x6db5d0]
movdqa xmm0, xmmword [0x6db5e0]
lea ecx, [esi + eax]
movd xmm3, dword [esi]
punpcklbw xmm3, xmm3
punpcklwd xmm3, xmm3
psrad xmm3, 0x18
pcmpeqd xmm3, xmm1
pand xmm3, xmm0
paddd xmm2, xmm3
add esi, 4
cmp esi, ecx
jb 0x6299e7
movdqa xmm0, xmm2
psrldq xmm0, 8
paddd xmm2, xmm0
movdqa xmm1, xmm2
psrldq xmm1, 4
paddd xmm2, xmm1
movd ecx, xmm2
mov esi, dword [esp + 0x4c]
cmp eax, esi
jae 0x629a61
mov dword [esp + 0x14], edx
mov dword [esp + 0x30], ebx
mov edi, dword [esp + 0x4c]
mov esi, dword [esp + 0x80]
mov edx, 1
xor ebx, ebx
cmp byte [eax + esi], 0x20
cmove ebx, edx
add ecx, ebx
inc eax
cmp eax, edi
jb 0x629a44
mov edx, dword [esp + 0x14]
mov ebx, dword [esp + 0x30]
cmp ecx, 1
jle 0x629a77
mov eax, dword [esp + 0x64]
sub eax, edx
shl eax, 0x10
xor edx, edx
div ecx
mov esi, eax
jmp 0x629a79
xor esi, esi
test esi, esi
jbe 0x629924
mov eax, esi
and eax, 0xffff0000
sar eax, 0x10
push 1
push eax
mov edx, dword [esp + 0x34]
push edx
call dword [sym.imp.GDI32.dll_SetTextJustification]
mov eax, dword [ebp + 0x18]
test eax, eax
je 0x629924
mov eax, dword [esp + 0x7c]
mov edx, dword [eax + 0x1c]
push dword [eax + 0x65]
mov edi, dword [esp + 0x84]
push edi
mov eax, dword [esp + 0x54]
push eax
mov ecx, dword [edx + 2]
lea edx, [esp + 0x5c]
call fcn.00529cc4
jmp 0x629924
test eax, eax
jbe 0x629a77
xor ecx, ecx
xor eax, eax
jmp 0x629a31
mov ebx, dword [esp + 0x30]
mov byte [edi], 0
sub edi, dword [esp + 0x80]
mov dword [esp + 0x48], edi
xor eax, eax
mov dword [esp + 0x84], eax
mov ecx, dword [esp + 0x80]
xor eax, eax
movzx edx, byte [ecx + eax]
test edx, edx
je 0x629b12
movzx edx, byte [ecx + eax + 1]
add eax, 2
test edx, edx
jne 0x629afd
dec eax
mov edx, dword [esp + 0x80]
lea ecx, [edx + eax - 1]
lea edx, [eax - 1]
test eax, eax
je 0x629b41
cmp byte [ecx], 0x20
jne 0x629b41
dec ecx
mov eax, 1
xor esi, esi
cmp edx, 0
cmovne esi, eax
dec edx
test esi, esi
je 0x629b41
cmp byte [ecx], 0x20
je 0x629b29
mov byte [ecx + 1], 0
mov ecx, dword [esp + 0x80]
xor eax, eax
movzx edx, byte [ecx + eax]
test edx, edx
je 0x629b63
movzx edx, byte [ecx + eax + 1]
add eax, 2
test edx, edx
jne 0x629b4e
dec eax
mov dword [esp + 0x4c], eax
jmp 0x629843
mov dword [esp + 0x84], esi
mov edx, ebx
mov eax, dword [esp + 0x10]
mov esi, dword [esp + 0x14]
mov ebx, dword [esp + 0x30]
lea ecx, [esi - 1]
mov dword [esp + 0x48], ecx
cmp edx, ecx
jge 0x629add
mov edx, dword [esp + 0x28]
cmp eax, edx
jge 0x629add
mov eax, dword [esp + 0x84]
push eax
mov edx, dword [esp + 0x50]
push edx
push edi
call fcn.006a7d10
add esp, 0xc
mov eax, dword [esp + 0x80]
mov byte [esi + eax - 1], 0x2d
mov byte [esi + eax], 0
mov edx, 1
mov dword [esp + 0x84], edx
jmp 0x629af4
mov dword [esp + 0x4c], ecx
mov ebx, dword [esp + 0x30]
mov edx, ecx
mov dword [esp + 0x34], edx
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x41]
mov dword [ecx + 8], edx
mov eax, dword [esp + 0x68]
test eax, eax
jle 0x629c2c
xor edx, edx
xor eax, eax
mov dword [esp + 0x64], esi
mov dword [esp + 0x60], edi
mov dword [esp + 0x30], ebx
mov ebx, dword [esp + 0x68]
mov esi, dword [ebp + 8]
mov ecx, dword [esi + 0x41]
mov edi, dword [ecx]
mov edi, dword [edi + eax]
add dword [ecx + 8], edi
add eax, 0x12
inc edx
cmp edx, ebx
jl 0x629c09
mov dword [esp + 0x68], ebx
mov esi, dword [esp + 0x64]
mov edi, dword [esp + 0x60]
mov ebx, dword [esp + 0x30]
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x41]
mov edx, dword [eax + 0x31]
add edx, dword [ecx + 8]
mov dword [ecx + 0xc], edx
mov eax, dword [esp + 0x7c]
mov edx, dword [eax + 0x65]
jmp 0x62943b
push ebp
mov ebp, esp
and esp, 0xfffffff0
push edi
push esi
push ebx
push ecx
mov eax, 0x90
call fcn.00697340
mov ecx, dword [esp + 0x90]
mov edi, ecx
mov ebx, dword [ebp + 8]
movsx eax, word [ebx + 0x5f]
test eax, eax
je 0x62a2b2
mov eax, dword [ebx + 0x41]
test eax, eax
je 0x629c84
mov eax, dword [eax + 0x4e]
mov dword [esp + 0x78], eax
jmp 0x629c8a
xor eax, eax
mov dword [esp + 0x78], eax
mov esi, dword [edi + 0x1c]
lea edx, [ebx + 0x6b]
lea eax, [ebx + 0x6d]
push eax
push edx
push dword [ebx + 0x49]
mov ecx, dword [esi + 2]
call fcn.00529108
cmp dword [ebx + 0x41], 0
je 0x62a2c1
mov eax, dword [ebp + 0x18]
test eax, eax
jne 0x629cc6
mov eax, dword [esp + 0x78]
test eax, eax
jne 0x629cc6
movsx eax, word [ebx + 0x5d]
cmp eax, 1
je 0x62a2c1
mov eax, dword [0x6db290]
mov dword [esp + 0x18], eax
mov edx, dword [0x6db294]
mov dword [esp + 0x1c], edx
mov esi, dword [0x6db298]
mov dword [esp + 0x50], esi
mov eax, dword [0x6db29c]
mov dword [esp + 0x54], eax
mov eax, dword [edi + 0x1c]
push 0
mov ecx, dword [eax + 2]
call fcn.00529094
mov eax, dword [edi + 0x1c]
mov ecx, dword [eax + 2]
call fcn.00529a6c
mov dword [esp + 0x24], eax
mov eax, dword [ebx + 0x41]
mov edx, dword [eax]
mov dword [esp + 0x30], edx
movsx ecx, word [ebx + 0x5d]
cmp ecx, 1
jle 0x629d26
mov eax, dword [ebx + 0x75]
cmp eax, 4
je 0x62a3b2
mov esi, 1
movzx eax, word [0x7e9224]
mov word [ebx + 0x6f], ax
movzx edx, word [0x7e9220]
mov word [ebx + 0x6f], dx
mov ecx, dword [edi + 0x1c]
mov eax, dword [ecx + 2]
mov eax, dword [eax + 4]
mov dword [esp + 0x2c], eax
mov eax, dword [ebx + 0x75]
cmp eax, 2
jne 0x629d61
mov eax, 2
mov dword [esp + 0x74], eax
jmp 0x629d75
mov edx, 3
cmp eax, 3
mov eax, 1
cmove eax, edx
mov dword [esp + 0x74], eax
mov eax, dword [edi + 0x61]
mov dword [esp + 0x80], eax
mov edx, dword [ebx + 0x31]
mov dword [esp + 0x70], edx
mov ecx, dword [ebx + 0x41]
mov eax, dword [ecx + 8]
mov dword [esp + 0x34], eax
movzx eax, byte [ebx + 0x84]
test al, 0x40
je 0x629dbb
mov eax, dword [esp + 0x24]
shl eax, 0x10
mov dword [esp + 0x20], eax
test eax, eax
je 0x629dc1
sar eax, 0x10
push eax
mov edx, dword [esp + 0x30]
push edx
call dword [sym.imp.GDI32.dll_SetTextCharacterExtra]
jmp 0x629dc1
xor eax, eax
mov dword [esp + 0x20], eax
mov eax, dword [ebp + 0x18]
test eax, eax
je 0x629dd3
movzx eax, byte [edi + 0x89]
test al, 4
jne 0x629de1
movsx edx, word [ebx + 0x5d]
mov eax, 0xffffffff
jmp 0x629e8e
lea eax, [esp + 0x18]
push eax
call dword [sym.imp.USER32.dll_GetCursorPos]
movsx edx, word [ebx + 0x5d]
test edx, edx
jle 0x62a41a
xor eax, eax
mov dword [esp + 0x28], esi
mov dword [esp + 0x7c], edi
mov esi, eax
lea edi, [esp]
push esi
push edx
mov edx, dword [ebp + 0x14]
push edx
push edi
mov ecx, dword [ebp + 0x10]
call fcn.0054b91c
mov edi, dword [ebp + 0xc]
mov ecx, dword [edi + 0xc]
mov edx, dword [ecx + 0xc]
add dword [esp], edx
mov edx, dword [ecx + 0xc]
add dword [esp + 8], edx
mov edx, dword [esp + 0xc]
add edx, dword [ecx + 0x10]
mov dword [esp + 0xc], edx
mov eax, dword [esp + 4]
add eax, dword [ecx + 0x10]
mov dword [esp + 4], eax
mov edi, dword [ecx + 0x1c]
movzx edi, word [edi]
sub edi, eax
movzx edi, di
mov dword [esp + 4], edi
mov ecx, dword [ecx + 0x1c]
movzx ecx, word [ecx]
sub ecx, edx
movzx edx, cx
mov dword [esp + 0xc], edx
lea edx, [esp]
push dword [esp + 0x1c]
push dword [esp + 0x1c]
push edx
call dword [sym.imp.USER32.dll_PtInRect]
cmp eax, 1
je 0x62a400
inc esi
movsx edx, word [ebx + 0x5d]
cmp esi, edx
jl 0x629e04
mov esi, dword [esp + 0x28]
mov edi, dword [esp + 0x7c]
mov eax, 0xffffffff
mov ecx, dword [ebx + 0x2d]
movsx ecx, word [ecx + 0x7b]
cmp ecx, edx
cmovl ecx, edx
mov dword [esp + 0x6c], ecx
test edx, edx
jle 0x62a29d
mov edx, 1
xor ecx, ecx
mov dword [esp + 0x68], ecx
mov dword [esp + 0x58], edx
mov dword [esp + 0x5c], eax
mov dword [esp + 0x28], esi
mov dword [esp + 0x7c], edi
mov ebx, dword [esp + 0x30]
lea edi, [esp + 0x38]
mov eax, dword [esp + 0x68]
push eax
mov edx, dword [esp + 0x70]
push edx
mov esi, dword [ebp + 0x14]
push esi
push edi
mov ecx, dword [ebp + 0x10]
call fcn.0054b91c
mov ecx, dword [ebp + 0xc]
mov edx, dword [ecx + 0xc]
mov eax, dword [edx + 0xc]
add dword [esp + 0x38], eax
mov eax, dword [edx + 0xc]
add dword [esp + 0x40], eax
mov eax, dword [esp + 0x44]
add eax, dword [edx + 0x10]
mov dword [esp + 0x44], eax
mov esi, dword [esp + 0x3c]
add esi, dword [edx + 0x10]
mov dword [esp + 0x3c], esi
mov ecx, dword [edx + 0x1c]
movzx ecx, word [ecx]
sub ecx, esi
movzx ecx, cx
mov dword [esp + 0x3c], ecx
mov edx, dword [edx + 0x1c]
movzx edx, word [edx]
sub edx, eax
movzx eax, dx
mov dword [esp + 0x44], eax
movzx eax, word [0x7e9220]
mov dword [esp + 0x60], eax
mov esi, dword [esp + 0x80]
mov edi, dword [esp + 0x70]
mov dl, byte [edi]
inc edi
mov byte [esi], dl
inc esi
test dl, dl
jne 0x629f3e
mov eax, dword [esp + 0x78]
test eax, eax
je 0x629f6e
mov edi, dword [esp + 0x80]
mov edx, 0x20
xor eax, eax
cmp byte [edi + eax], 0
je 0x629f6c
mov byte [edi + eax], dl
add eax, 1
jmp 0x629f5e
mov eax, edi
mov eax, dword [ebp + 0x18]
test eax, eax
je 0x629fa8
mov eax, dword [esp + 0x58]
test eax, eax
je 0x629f9c
mov eax, dword [ebp + 8]
mov edi, dword [eax + 0x21]
mov esi, dword [ebp + 0x18]
push esi
mov ecx, dword [esp + 0x84]
mov edx, dword [edi + 0x6a]
call fcn.004f727c
xor eax, eax
mov dword [esp + 0x58], eax
mov eax, dword [ebp + 0x18]
cmp eax, 1
je 0x62a424
mov edx, dword [ebx]
cmp edx, 0xffffffff
je 0x62a424
mov esi, dword [ebx + 8]
test esi, esi
je 0x629fd4
mov eax, esi
and eax, 0xffff0000
sar eax, 0x10
push 1
push eax
mov edx, dword [esp + 0x34]
push edx
call dword [sym.imp.GDI32.dll_SetTextJustification]
mov edx, dword [ebx]
mov eax, dword [esp + 0x7c]
mov ecx, dword [eax + 0x1c]
push dword [eax + 0x65]
mov edi, dword [esp + 0x84]
push edi
push edx
mov ecx, dword [ecx + 2]
lea edx, [esp + 0x5c]
call fcn.00529cc4
lea edi, [ebx + 0xc]
mov eax, dword [ebx]
mov dword [esp + 0x84], eax
movzx edx, word [edi]
cmp edx, 0x2710
je 0x62a061
mov eax, dword [esp + 0x7c]
mov edx, dword [eax + 0x1c]
push edi
mov ecx, dword [edx + 2]
call fcn.00529094
mov eax, dword [esp + 0x84]
test eax, eax
jb 0x62a061
xor eax, eax
mov dword [esp + 0x64], esi
mov dword [esp + 0x30], ebx
mov ebx, edi
mov edi, eax
mov esi, dword [esp + 0x7c]
mov edx, dword [esi + 0x65]
push dword [edx + edi*4]
mov ecx, ebx
call fcn.0054c938
movsx edx, ax
mov ecx, dword [esi + 0x65]
mov dword [ecx + edi*4], edx
inc edi
mov edx, dword [esp + 0x84]
cmp edi, edx
jbe 0x62a037
mov esi, dword [esp + 0x64]
mov ebx, dword [esp + 0x30]
mov edi, dword [ebx + 4]
cmp dword [ebx + 0xe], 0
je 0x62a076
mov eax, dword [esp + 0x80]
mov byte [edi + eax - 1], 0x2d
mov eax, dword [esp + 0x84]
add dword [esp + 0x70], eax
mov edx, dword [ebp + 0x18]
test edx, edx
je 0x62a0d8
mov eax, dword [esp + 0x5c]
mov edx, dword [esp + 0x68]
cmp eax, edx
jne 0x62a0d8
mov eax, dword [esp + 0x84]
test eax, eax
jbe 0x62a0d8
mov edx, dword [esp + 0x18]
mov dword [esp + 0x48], edx
mov eax, dword [esp + 0x7c]
mov edx, dword [eax + 0x65]
xor ecx, ecx
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x30], ebx
mov eax, dword [esp + 0x48]
mov ebx, dword [esp + 0x84]
cmp eax, dword [edx + ecx*4 + 4]
jl 0x62a861
inc ecx
cmp ecx, ebx
jb 0x62a0c3
mov ebx, dword [esp + 0x30]
jmp 0x62a0df
mov eax, dword [esp + 0x7c]
mov edx, dword [eax + 0x65]
mov dword [esp + 0x64], esi
mov esi, dword [esp + 0x7c]
mov eax, dword [esi + 0x1c]
mov ecx, dword [ebp + 0x1c]
push ecx
mov ecx, dword [esp + 0x78]
push ecx
push dword [edx + edi*4]
lea edx, [esp + 0x44]
push edx
mov edx, dword [esp + 0x90]
push edx
push edi
mov ecx, dword [eax + 2]
mov esi, dword [esp + 0x7c]
call fcn.005cdec0
mov eax, dword [esp + 0x38]
test eax, eax
jl 0x62a14a
cmp eax, dword [esp + 0x40]
jge 0x62a14a
mov eax, dword [esp + 0x7c]
mov edx, dword [eax + 0x1c]
movzx ecx, byte [edx + 0x5e]
test cl, 2
je 0x62a14a
mov dword [esp + 0x64], esi
mov esi, dword [ebp + 0xc]
lea edx, [esi + 0x4c]
lea eax, [esp + 0x38]
push eax
push edx
mov ecx, dword [esi + 0x10]
mov esi, dword [esp + 0x6c]
call fcn.0059a0d4
mov eax, dword [ebp + 0x1c]
test eax, eax
jne 0x62a26f
mov eax, dword [ebp + 0x18]
test eax, eax
je 0x62a26f
mov eax, dword [esp + 0x34]
test eax, eax
jl 0x62a260
mov edx, dword [esp + 0x84]
cmp eax, edx
jl 0x62a18e
cmp eax, edx
jne 0x62a260
mov eax, dword [esp + 0x70]
movsx edx, byte [eax]
test edx, edx
jne 0x62a260
mov eax, dword [esp + 0x7c]
movzx edx, byte [eax + 0x58]
test dl, 2
jne 0x62a257
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x41]
mov ecx, dword [edx + 0x46]
mov dword [esp + 0x48], ecx
mov eax, dword [esp + 0x7c]
mov eax, dword [eax + 0x65]
mov dword [esp + 0x4c], eax
mov eax, dword [esp + 0x34]
cmp eax, edi
jge 0x62a1d2
mov edx, eax
mov eax, dword [esp + 0x4c]
mov ecx, dword [eax + edx*4 + 4]
sub ecx, dword [eax + edx*4]
mov dword [esp + 0x14], ecx
jmp 0x62a1da
mov eax, dword [esp + 0x24]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x34]
cmp edx, edi
jle 0x62a1f5
mov edx, dword [esp + 0x4c]
mov ecx, dword [edx + edi*4]
add ecx, eax
mov dword [esp + 0x34], ecx
jmp 0x62a204
mov ecx, edx
mov edx, dword [esp + 0x4c]
mov edi, dword [edx + ecx*4]
add edi, eax
mov dword [esp + 0x34], edi
mov eax, dword [esp + 0x40]
mov edx, dword [esp + 0x34]
cmp eax, edx
cmovl edx, eax
mov dword [esp + 0x34], edx
mov edi, dword [esp + 0x7c]
mov eax, dword [edi + 0x1c]
mov ecx, dword [eax + 2]
call fcn.00529a44
mov edx, dword [esp + 0x48]
test edx, edx
je 0x62a236
add eax, 0xfffffffe
mov edx, dword [esp + 0x3c]
inc edx
jmp 0x62a245
mov eax, edi
mov edx, dword [eax + 0x1c]
mov eax, dword [edx + 0x1a]
mov edx, dword [esp + 0x44]
sub edx, eax
dec edx
push eax
mov eax, dword [esp + 0x18]
push eax
push edx
mov ecx, edi
mov edx, dword [esp + 0x40]
call fcn.00529c5c
mov eax, 0xffffffff
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x34]
sub eax, dword [esp + 0x84]
mov dword [esp + 0x34], eax
test esi, esi
je 0x62a282
push 1
push 0
mov eax, dword [esp + 0x34]
push eax
call dword [sym.imp.GDI32.dll_SetTextJustification]
add ebx, 0x12
mov edx, dword [esp + 0x68]
inc edx
mov dword [esp + 0x68], edx
mov eax, dword [ebp + 8]
movsx ecx, word [eax + 0x5d]
cmp edx, ecx
jl 0x629ec5
mov eax, dword [esp + 0x20]
test eax, eax
je 0x62a2b2
push 0
mov eax, dword [esp + 0x30]
push eax
call dword [sym.imp.GDI32.dll_SetTextCharacterExtra]
add esp, 0x94
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret 0x18
lea ecx, [esp + 0x38]
mov eax, dword [ebx + 0x2d]
movsx edx, word [eax + 0x7b]
push 0
push edx
mov esi, dword [ebp + 0x14]
push esi
push ecx
mov ecx, dword [ebp + 0x10]
call fcn.0054b91c
mov dword [esp + 0x7c], edi
mov eax, dword [ebp + 0xc]
mov edi, dword [eax + 0xc]
mov eax, dword [edi + 0xc]
add dword [esp + 0x38], eax
mov eax, dword [edi + 0xc]
add dword [esp + 0x40], eax
mov esi, dword [esp + 0x44]
add esi, dword [edi + 0x10]
mov dword [esp + 0x44], esi
mov edx, dword [esp + 0x3c]
add edx, dword [edi + 0x10]
mov dword [esp + 0x3c], edx
mov eax, dword [edi + 0x1c]
movzx eax, word [eax]
sub eax, edx
movzx eax, ax
mov dword [esp + 0x3c], eax
mov eax, dword [edi + 0x1c]
movzx eax, word [eax]
sub eax, esi
movzx eax, ax
mov dword [esp + 0x44], eax
movzx edx, byte [ebx + 0x84]
and edx, 0x40
shr edx, 6
lea eax, [ebx + 0x6f]
mov ecx, dword [ebp + 0x14]
movsx edi, word [ecx + 0x18]
movzx esi, byte [ebx + 0x83]
and esi, 0x40
shr esi, 6
mov ecx, dword [ebp + 0x1c]
push ecx
push esi
push edi
push eax
push edx
push dword [ebx + 0x75]
lea eax, [esp + 0x50]
push eax
push dword [ebx + 0x31]
mov ecx, dword [ebp + 0xc]
mov edi, dword [esp + 0x9c]
call fcn.0054aa70
mov edx, dword [ebp + 0x14]
mov word [edx + 0x18], ax
mov eax, dword [esp + 0x38]
test eax, eax
jl 0x62a3a3
cmp eax, dword [esp + 0x40]
jge 0x62a3a3
mov eax, dword [edi + 0x1c]
movzx edx, byte [eax + 0x5e]
test dl, 2
je 0x62a3a3
mov ebx, dword [ebp + 0xc]
lea edx, [ebx + 0x4c]
lea eax, [esp + 0x38]
push eax
push edx
mov ecx, dword [ebx + 0x10]
call fcn.0059a0d4
add esp, 0x94
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret 0x18
mov eax, dword [esp + 0x24]
test eax, eax
jle 0x629d26
movsx eax, word [ebx + 0x5f]
mov ecx, dword [esp + 0x24]
lea esi, [ecx + ecx*4]
cdq
idiv esi
mov esi, eax
test esi, esi
jg 0x62a3e6
movsx ecx, word [ebx + 0x5b]
mov eax, 0x66666667
imul ecx
mov esi, edx
sar esi, 1
sar ecx, 0x1f
sub esi, ecx
cmp esi, 5
jle 0x62a3f0
mov esi, 5
mov eax, 1
cmp esi, 0
cmovle esi, eax
jmp 0x629d2b
mov eax, esi
mov esi, dword [esp + 0x28]
mov edi, dword [esp + 0x7c]
mov edx, dword [esp]
sub dword [esp + 0x18], edx
movsx edx, word [ebx + 0x5d]
jmp 0x629e8e
mov eax, 0xffffffff
jmp 0x629e8e
mov ecx, dword [esp + 0x80]
xor eax, eax
movzx edx, byte [ecx + eax]
test edx, edx
je 0x62a442
movzx edx, byte [ecx + eax + 1]
add eax, 2
test edx, edx
jne 0x62a42d
dec eax
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], eax
test eax, eax
jne 0x62a46b
mov eax, dword [esp + 0x7c]
mov edx, dword [eax + 0x65]
mov dword [edx], 0
xor ecx, ecx
mov dword [esp + 0x84], ecx
xor esi, esi
jmp 0x62a5c8
mov eax, dword [esp + 0x40]
sub eax, dword [esp + 0x38]
mov dword [esp + 0x64], eax
mov esi, dword [esp + 0x7c]
mov edx, dword [esi + 0x1c]
push dword [esi + 0x65]
mov edi, dword [esp + 0x84]
push edi
mov eax, dword [esp + 0x50]
push eax
mov ecx, dword [edx + 2]
lea edx, [esp + 0x5c]
call fcn.00529cc4
mov ecx, esi
mov ecx, dword [ecx + 0x65]
mov esi, dword [esp + 0x48]
mov esi, dword [ecx + esi*4]
mov eax, dword [esp + 0x64]
cmp esi, eax
jle 0x62a5bd
mov eax, dword [ebp + 8]
movsx edi, word [eax + 0x5d]
dec edi
mov edx, dword [esp + 0x68]
cmp edx, edi
je 0x62a59c
mov eax, dword [esp + 0x64]
push eax
mov edx, dword [esp + 0x4c]
call fcn.004f6d00
mov esi, eax
mov eax, dword [esp + 0x48]
cmp esi, eax
jne 0x62a4fd
xor eax, eax
mov dword [esp + 0x84], eax
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x75]
cmp edx, 4
je 0x62a5f1
xor esi, esi
jmp 0x62a5c8
mov eax, dword [esp + 0x70]
mov dword [esp + 0x4c], eax
mov edi, dword [esp + 0x80]
xor eax, eax
mov dword [esp + 0x10], eax
mov dword [esp + 0x14], esi
mov dword [esp + 0x30], ebx
mov ebx, eax
jmp 0x62a522
inc dword [esp + 0x10]
mov ecx, dword [esp + 0x4c]
call fcn.0062b4d0
mov esi, eax
test esi, esi
je 0x62a767
lea ecx, [ebx + esi]
mov dword [esp + 0x48], ecx
mov eax, dword [esp + 0x14]
cmp eax, ecx
jl 0x62a7fa
push esi
mov eax, dword [esp + 0x50]
push eax
push edi
call fcn.006a7d10
add esp, 0xc
add edi, esi
add esi, dword [esp + 0x4c]
mov ebx, esi
movsx eax, byte [esi]
test eax, eax
je 0x62a574
cmp eax, 0x20
jne 0x62a574
movsx eax, byte [ebx + 1]
inc ebx
test eax, eax
jne 0x62a566
sub ebx, esi
push ebx
push esi
push edi
call fcn.006a7d10
add esp, 0xc
add edi, ebx
lea eax, [ebx + esi]
mov dword [esp + 0x4c], eax
add ebx, dword [esp + 0x48]
mov ecx, dword [esp + 0x14]
cmp ebx, ecx
jge 0x62a767
jmp 0x62a51e
mov ecx, dword [esp + 0x64]
imul eax, ecx, 0x2710
cdq
idiv esi
movzx esi, ax
mov dword [esp + 0x60], esi
xor edi, edi
mov dword [esp + 0x84], edi
xor esi, esi
jmp 0x62a5c8
xor eax, eax
mov dword [esp + 0x84], eax
xor esi, esi
mov edi, dword [esp + 0x4c]
mov dword [ebx + 4], edi
mov eax, dword [esp + 0x48]
mov dword [ebx], eax
mov dword [ebx + 8], esi
lea edi, [ebx + 0xc]
mov edx, dword [esp + 0x60]
mov word [edi], dx
mov ecx, dword [esp + 0x84]
mov dword [ebx + 0xe], ecx
jmp 0x629ff6
mov eax, dword [esp + 0x4c]
mov edx, dword [esp + 0x70]
movsx ecx, byte [eax + edx]
test ecx, ecx
je 0x62a4f6
mov eax, dword [esp + 0x84]
test eax, eax
je 0x62a633
mov eax, dword [esp + 0x7c]
mov edx, dword [eax + 0x1c]
push dword [eax + 0x65]
mov esi, dword [esp + 0x84]
push esi
mov edi, dword [esp + 0x54]
push edi
mov ecx, dword [edx + 2]
lea edx, [esp + 0x5c]
call fcn.00529cc4
mov eax, dword [esp + 0x7c]
mov eax, dword [eax + 0x65]
mov edx, dword [esp + 0x64]
mov ecx, dword [esp + 0x4c]
cmp edx, dword [eax + ecx*4]
jg 0x62a64e
xor esi, esi
jmp 0x62a5c8
mov edx, dword [eax + ecx*4]
test ecx, ecx
jle 0x62a705
mov eax, ecx
cmp eax, 2
jl 0x62a75a
mov eax, ecx
and eax, 1
neg eax
add eax, ecx
pxor mm2, mm2
xor ecx, ecx
movq mm1, qword [0x6db600]
movq mm0, qword [0x6db608]
mov edi, dword [esp + 0x80]
movzx esi, word [ecx + edi]
movd mm3, esi
punpcklbw mm3, mm3
punpcklwd mm3, mm3
psrad mm3, 0x18
pcmpeqd mm3, mm1
pand mm3, mm0
paddd mm2, mm3
add ecx, 2
cmp ecx, eax
jb 0x62a687
movq mm0, mm2
psrlq mm0, 0x20
paddd mm2, mm0
movd ecx, mm2
emms
mov esi, dword [esp + 0x4c]
cmp eax, esi
jae 0x62a6ef
mov dword [esp + 0x14], edx
mov dword [esp + 0x30], ebx
mov edi, dword [esp + 0x4c]
mov esi, dword [esp + 0x80]
mov edx, 1
xor ebx, ebx
cmp byte [eax + esi], 0x20
cmove ebx, edx
add ecx, ebx
inc eax
cmp eax, edi
jb 0x62a6d2
mov edx, dword [esp + 0x14]
mov ebx, dword [esp + 0x30]
cmp ecx, 1
jle 0x62a705
mov eax, dword [esp + 0x64]
sub eax, edx
shl eax, 0x10
xor edx, edx
div ecx
mov esi, eax
jmp 0x62a707
xor esi, esi
test esi, esi
jbe 0x62a5c8
mov eax, esi
and eax, 0xffff0000
sar eax, 0x10
push 1
push eax
mov edx, dword [esp + 0x34]
push edx
call dword [sym.imp.GDI32.dll_SetTextJustification]
mov eax, dword [ebp + 0x18]
test eax, eax
je 0x62a5c8
mov eax, dword [esp + 0x7c]
mov edx, dword [eax + 0x1c]
push dword [eax + 0x65]
mov edi, dword [esp + 0x84]
push edi
mov eax, dword [esp + 0x54]
push eax
mov ecx, dword [edx + 2]
lea edx, [esp + 0x5c]
call fcn.00529cc4
jmp 0x62a5c8
test eax, eax
jbe 0x62a705
xor ecx, ecx
xor eax, eax
jmp 0x62a6bf
mov ebx, dword [esp + 0x30]
mov byte [edi], 0
sub edi, dword [esp + 0x80]
mov dword [esp + 0x48], edi
xor eax, eax
mov dword [esp + 0x84], eax
mov ecx, dword [esp + 0x80]
xor eax, eax
movzx edx, byte [ecx + eax]
test edx, edx
je 0x62a7a0
movzx edx, byte [ecx + eax + 1]
add eax, 2
test edx, edx
jne 0x62a78b
dec eax
mov edx, dword [esp + 0x80]
lea ecx, [edx + eax - 1]
lea edx, [eax - 1]
test eax, eax
je 0x62a7cf
cmp byte [ecx], 0x20
jne 0x62a7cf
dec ecx
mov eax, 1
xor esi, esi
cmp edx, 0
cmovne esi, eax
dec edx
test esi, esi
je 0x62a7cf
cmp byte [ecx], 0x20
je 0x62a7b7
mov byte [ecx + 1], 0
mov ecx, dword [esp + 0x80]
xor eax, eax
movzx edx, byte [ecx + eax]
test edx, edx
je 0x62a7f1
movzx edx, byte [ecx + eax + 1]
add eax, 2
test edx, edx
jne 0x62a7dc
dec eax
mov dword [esp + 0x4c], eax
jmp 0x62a4e7
mov dword [esp + 0x84], esi
mov edx, ebx
mov eax, dword [esp + 0x10]
mov esi, dword [esp + 0x14]
mov ebx, dword [esp + 0x30]
lea ecx, [esi - 1]
mov dword [esp + 0x48], ecx
cmp edx, ecx
jge 0x62a76b
mov edx, dword [esp + 0x28]
cmp eax, edx
jge 0x62a76b
mov eax, dword [esp + 0x84]
push eax
mov edx, dword [esp + 0x50]
push edx
push edi
call fcn.006a7d10
add esp, 0xc
mov eax, dword [esp + 0x80]
mov byte [esi + eax - 1], 0x2d
mov byte [esi + eax], 0
mov edx, 1
mov dword [esp + 0x84], edx
jmp 0x62a782
mov dword [esp + 0x4c], ecx
mov ebx, dword [esp + 0x30]
mov edx, ecx
mov dword [esp + 0x34], edx
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x41]
mov dword [ecx + 8], edx
mov eax, dword [esp + 0x68]
test eax, eax
jle 0x62a8ba
xor edx, edx
xor eax, eax
mov dword [esp + 0x64], esi
mov dword [esp + 0x60], edi
mov dword [esp + 0x30], ebx
mov ebx, dword [esp + 0x68]
mov esi, dword [ebp + 8]
mov ecx, dword [esi + 0x41]
mov edi, dword [ecx]
mov edi, dword [edi + eax]
add dword [ecx + 8], edi
add eax, 0x12
inc edx
cmp edx, ebx
jl 0x62a897
mov dword [esp + 0x68], ebx
mov esi, dword [esp + 0x64]
mov edi, dword [esp + 0x60]
mov ebx, dword [esp + 0x30]
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x41]
mov edx, dword [eax + 0x31]
add edx, dword [ecx + 8]
mov dword [ecx + 0xc], edx
mov eax, dword [esp + 0x7c]
mov edx, dword [eax + 0x65]
jmp 0x62a0df
push ebp
mov ebp, esp
and esp, 0xfffffff0
push edi
push esi
push ebx
push ecx
mov eax, 0x90
call fcn.00697340
mov ecx, dword [esp + 0x90]
mov edi, ecx
mov ebx, dword [ebp + 8]
movsx eax, word [ebx + 0x5f]
test eax, eax
je 0x62af41
mov eax, dword [ebx + 0x41]
test eax, eax
je 0x62a914
mov eax, dword [eax + 0x4e]
mov dword [esp + 0x78], eax
jmp 0x62a91a
xor eax, eax
mov dword [esp + 0x78], eax
mov esi, dword [edi + 0x1c]
lea edx, [ebx + 0x6b]
lea eax, [ebx + 0x6d]
push eax
push edx
push dword [ebx + 0x49]
mov ecx, dword [esi + 2]
call fcn.00529108
cmp dword [ebx + 0x41], 0
je 0x62af50
mov eax, dword [ebp + 0x18]
test eax, eax
jne 0x62a956
mov eax, dword [esp + 0x78]
test eax, eax
jne 0x62a956
movsx eax, word [ebx + 0x5d]
cmp eax, 1
je 0x62af50
mov eax, dword [0x6db2a0]
mov dword [esp + 0x10], eax
mov edx, dword [0x6db2a4]
mov dword [esp + 0x14], edx
mov esi, dword [0x6db2a8]
mov dword [esp + 0x50], esi
mov eax, dword [0x6db2ac]
mov dword [esp + 0x54], eax
mov eax, dword [edi + 0x1c]
push 0
mov ecx, dword [eax + 2]
call fcn.00529094
mov eax, dword [edi + 0x1c]
mov ecx, dword [eax + 2]
call fcn.00529a6c
mov dword [esp + 0x1c], eax
mov eax, dword [ebx + 0x41]
mov edx, dword [eax]
mov dword [esp + 0x28], edx
movsx ecx, word [ebx + 0x5d]
cmp ecx, 1
jle 0x62a9b6
mov eax, dword [ebx + 0x75]
cmp eax, 4
je 0x62b041
mov esi, 1
movzx eax, word [0x7e9224]
mov word [ebx + 0x6f], ax
movzx edx, word [0x7e9220]
mov word [ebx + 0x6f], dx
mov ecx, dword [edi + 0x1c]
mov eax, dword [ecx + 2]
mov eax, dword [eax + 4]
mov dword [esp + 0x24], eax
mov eax, dword [ebx + 0x75]
cmp eax, 2
jne 0x62a9f1
mov eax, 2
mov dword [esp + 0x74], eax
jmp 0x62aa04
cmp eax, 3
mov eax, 3
je 0x62aa00
mov eax, 1
mov dword [esp + 0x74], eax
mov eax, dword [edi + 0x61]
mov dword [esp + 0x70], eax
mov edx, dword [ebx + 0x31]
mov dword [esp + 0x6c], edx
mov ecx, dword [ebx + 0x41]
mov eax, dword [ecx + 8]
mov dword [esp + 0x30], eax
movzx eax, byte [ebx + 0x84]
test al, 0x40
je 0x62aa47
mov eax, dword [esp + 0x1c]
shl eax, 0x10
mov dword [esp + 0x18], eax
test eax, eax
je 0x62aa4d
sar eax, 0x10
push eax
mov edx, dword [esp + 0x28]
push edx
call dword [sym.imp.GDI32.dll_SetTextCharacterExtra]
jmp 0x62aa4d
xor eax, eax
mov dword [esp + 0x18], eax
mov eax, dword [ebp + 0x18]
test eax, eax
je 0x62aa5f
movzx eax, byte [edi + 0x89]
test al, 4
jne 0x62aa6d
movsx edx, word [ebx + 0x5d]
mov eax, 0xffffffff
jmp 0x62ab1a
lea eax, [esp + 0x10]
push eax
call dword [sym.imp.USER32.dll_GetCursorPos]
movsx edx, word [ebx + 0x5d]
test edx, edx
jle 0x62b0b0
xor eax, eax
mov dword [esp + 0x20], esi
mov dword [esp + 0x7c], edi
mov esi, eax
lea edi, [esp]
push esi
push edx
mov edx, dword [ebp + 0x14]
push edx
push edi
mov ecx, dword [ebp + 0x10]
call fcn.0054b91c
mov edi, dword [ebp + 0xc]
mov ecx, dword [edi + 0xc]
mov edx, dword [ecx + 0xc]
add dword [esp], edx
mov edx, dword [ecx + 0xc]
add dword [esp + 8], edx
mov edx, dword [esp + 0xc]
add edx, dword [ecx + 0x10]
mov dword [esp + 0xc], edx
mov eax, dword [esp + 4]
add eax, dword [ecx + 0x10]
mov dword [esp + 4], eax
mov edi, dword [ecx + 0x1c]
movzx edi, word [edi]
sub edi, eax
movzx edi, di
mov dword [esp + 4], edi
mov ecx, dword [ecx + 0x1c]
movzx ecx, word [ecx]
sub ecx, edx
movzx edx, cx
mov dword [esp + 0xc], edx
lea edx, [esp]
push dword [esp + 0x14]
push dword [esp + 0x14]
push edx
call dword [sym.imp.USER32.dll_PtInRect]
cmp eax, 1
je 0x62b096
inc esi
movsx edx, word [ebx + 0x5d]
cmp esi, edx
jl 0x62aa90
mov esi, dword [esp + 0x20]
mov edi, dword [esp + 0x7c]
mov eax, 0xffffffff
mov ecx, dword [ebx + 0x2d]
movsx ecx, word [ecx + 0x7b]
cmp ecx, edx
jge 0x62ab27
mov ecx, edx
mov dword [esp + 0x68], ecx
test edx, edx
jle 0x62af2c
mov edx, 1
xor ecx, ecx
mov dword [esp + 0x80], ecx
mov dword [esp + 0x58], edx
mov dword [esp + 0x5c], eax
mov dword [esp + 0x20], esi
mov dword [esp + 0x7c], edi
mov ebx, dword [esp + 0x28]
lea edi, [esp + 0x34]
mov eax, dword [esp + 0x80]
push eax
mov edx, dword [esp + 0x6c]
push edx
mov esi, dword [ebp + 0x14]
push esi
push edi
mov ecx, dword [ebp + 0x10]
call fcn.0054b91c
mov ecx, dword [ebp + 0xc]
mov edx, dword [ecx + 0xc]
mov eax, dword [edx + 0xc]
add dword [esp + 0x34], eax
mov eax, dword [edx + 0xc]
add dword [esp + 0x3c], eax
mov eax, dword [esp + 0x40]
add eax, dword [edx + 0x10]
mov dword [esp + 0x40], eax
mov esi, dword [esp + 0x38]
add esi, dword [edx + 0x10]
mov dword [esp + 0x38], esi
mov ecx, dword [edx + 0x1c]
movzx ecx, word [ecx]
sub ecx, esi
movzx ecx, cx
mov dword [esp + 0x38], ecx
mov edx, dword [edx + 0x1c]
movzx edx, word [edx]
sub edx, eax
movzx eax, dx
mov dword [esp + 0x40], eax
movzx eax, word [0x7e9220]
mov dword [esp + 0x64], eax
mov esi, dword [esp + 0x70]
mov edi, dword [esp + 0x6c]
mov dl, byte [edi]
inc edi
mov byte [esi], dl
inc esi
test dl, dl
jne 0x62abce
mov eax, dword [esp + 0x78]
test eax, eax
je 0x62abfb
mov edi, dword [esp + 0x70]
mov edx, 0x20
xor eax, eax
cmp byte [edi + eax], 0
je 0x62abf9
mov byte [edi + eax], dl
add eax, 1
jmp 0x62abeb
mov eax, edi
mov eax, dword [ebp + 0x18]
test eax, eax
je 0x62ac32
mov eax, dword [esp + 0x58]
test eax, eax
je 0x62ac26
mov eax, dword [ebp + 8]
mov edi, dword [eax + 0x21]
mov esi, dword [ebp + 0x18]
push esi
mov ecx, dword [esp + 0x74]
mov edx, dword [edi + 0x6a]
call fcn.004f727c
xor eax, eax
mov dword [esp + 0x58], eax
mov eax, dword [ebp + 0x18]
cmp eax, 1
je 0x62b0ba
mov edx, dword [ebx]
cmp edx, 0xffffffff
je 0x62b0ba
mov esi, dword [ebx + 8]
test esi, esi
je 0x62ac5e
mov eax, esi
and eax, 0xffff0000
sar eax, 0x10
push 1
push eax
mov edx, dword [esp + 0x2c]
push edx
call dword [sym.imp.GDI32.dll_SetTextJustification]
mov edx, dword [ebx]
mov eax, dword [esp + 0x7c]
mov ecx, dword [eax + 0x1c]
push dword [eax + 0x65]
mov edi, dword [esp + 0x74]
push edi
push edx
mov ecx, dword [ecx + 2]
lea edx, [esp + 0x5c]
call fcn.00529cc4
lea edi, [ebx + 0xc]
mov eax, dword [ebx]
mov dword [esp + 0x84], eax
movzx edx, word [edi]
cmp edx, 0x2710
je 0x62ace8
mov eax, dword [esp + 0x7c]
mov edx, dword [eax + 0x1c]
push edi
mov ecx, dword [edx + 2]
call fcn.00529094
mov eax, dword [esp + 0x84]
test eax, eax
jb 0x62ace8
xor eax, eax
mov dword [esp + 0x60], esi
mov dword [esp + 0x28], ebx
mov ebx, edi
mov edi, eax
mov esi, dword [esp + 0x7c]
mov edx, dword [esi + 0x65]
push dword [edx + edi*4]
mov ecx, ebx
call fcn.0054c938
movsx edx, ax
mov ecx, dword [esi + 0x65]
mov dword [ecx + edi*4], edx
inc edi
mov edx, dword [esp + 0x84]
cmp edi, edx
jbe 0x62acbe
mov esi, dword [esp + 0x60]
mov ebx, dword [esp + 0x28]
mov edi, dword [ebx + 4]
cmp dword [ebx + 0xe], 0
je 0x62acfa
mov eax, dword [esp + 0x70]
mov byte [edi + eax - 1], 0x2d
mov eax, dword [esp + 0x84]
add dword [esp + 0x6c], eax
mov edx, dword [ebp + 0x18]
test edx, edx
je 0x62ad5f
mov eax, dword [esp + 0x5c]
mov edx, dword [esp + 0x80]
cmp eax, edx
jne 0x62ad5f
mov eax, dword [esp + 0x84]
test eax, eax
jbe 0x62ad5f
mov edx, dword [esp + 0x10]
mov dword [esp + 0x2c], edx
mov eax, dword [esp + 0x7c]
mov edx, dword [eax + 0x65]
xor ecx, ecx
mov dword [esp + 0x4c], ecx
mov dword [esp + 0x28], ebx
mov eax, dword [esp + 0x2c]
mov ebx, dword [esp + 0x84]
cmp eax, dword [edx + ecx*4 + 4]
jl 0x62b450
inc ecx
cmp ecx, ebx
jb 0x62ad4a
mov ebx, dword [esp + 0x28]
jmp 0x62ad66
mov eax, dword [esp + 0x7c]
mov edx, dword [eax + 0x65]
mov dword [esp + 0x60], esi
mov esi, dword [esp + 0x7c]
mov eax, dword [esi + 0x1c]
mov ecx, dword [ebp + 0x1c]
push ecx
mov ecx, dword [esp + 0x78]
push ecx
push dword [edx + edi*4]
lea edx, [esp + 0x40]
push edx
mov edx, dword [esp + 0x80]
push edx
push edi
mov ecx, dword [eax + 2]
mov esi, dword [esp + 0x78]
call fcn.005cdec0
mov eax, dword [esp + 0x34]
test eax, eax
jl 0x62add1
cmp eax, dword [esp + 0x3c]
jge 0x62add1
mov eax, dword [esp + 0x7c]
mov edx, dword [eax + 0x1c]
movzx ecx, byte [edx + 0x5e]
test cl, 2
je 0x62add1
mov dword [esp + 0x60], esi
mov esi, dword [ebp + 0xc]
lea edx, [esi + 0x4c]
lea eax, [esp + 0x34]
push eax
push edx
mov ecx, dword [esi + 0x10]
mov esi, dword [esp + 0x68]
call fcn.0059a0d4
mov eax, dword [ebp + 0x1c]
test eax, eax
jne 0x62aef8
mov eax, dword [ebp + 0x18]
test eax, eax
je 0x62aef8
mov eax, dword [esp + 0x30]
test eax, eax
jl 0x62aee9
mov edx, dword [esp + 0x84]
cmp eax, edx
jl 0x62ae15
cmp eax, edx
jne 0x62aee9
mov eax, dword [esp + 0x6c]
movsx edx, byte [eax]
test edx, edx
jne 0x62aee9
mov eax, dword [esp + 0x7c]
movzx edx, byte [eax + 0x58]
test dl, 2
jne 0x62aee0
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x41]
mov ecx, dword [edx + 0x46]
mov dword [esp + 0x44], ecx
mov eax, dword [esp + 0x7c]
mov eax, dword [eax + 0x65]
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x30]
cmp eax, edi
jge 0x62ae59
mov edx, eax
mov eax, dword [esp + 0x2c]
mov ecx, dword [eax + edx*4 + 4]
sub ecx, dword [eax + edx*4]
mov dword [esp + 0x48], ecx
jmp 0x62ae61
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x34]
mov dword [esp + 0x4c], eax
mov edx, dword [esp + 0x30]
cmp edx, edi
jle 0x62ae7e
mov eax, dword [esp + 0x2c]
mov eax, dword [eax + edi*4]
add eax, dword [esp + 0x4c]
jmp 0x62ae89
mov eax, dword [esp + 0x2c]
mov eax, dword [eax + edx*4]
add eax, dword [esp + 0x4c]
mov edx, dword [esp + 0x3c]
cmp edx, eax
jl 0x62ae93
mov edx, eax
mov dword [esp + 0x30], edx
mov eax, dword [esp + 0x7c]
mov edi, dword [eax + 0x1c]
mov ecx, dword [edi + 2]
call fcn.00529a44
mov edx, dword [esp + 0x44]
test edx, edx
je 0x62aeb8
add eax, 0xfffffffe
mov edx, dword [esp + 0x38]
inc edx
jmp 0x62aec9
mov eax, dword [esp + 0x7c]
mov edx, dword [eax + 0x1c]
mov eax, dword [edx + 0x1a]
mov edx, dword [esp + 0x40]
sub edx, eax
dec edx
push eax
mov eax, dword [esp + 0x4c]
push eax
push edx
mov ecx, dword [esp + 0x88]
mov edx, dword [esp + 0x3c]
call fcn.00529c5c
mov eax, 0xffffffff
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0x30]
sub eax, dword [esp + 0x84]
mov dword [esp + 0x30], eax
test esi, esi
je 0x62af0b
push 1
push 0
mov eax, dword [esp + 0x2c]
push eax
call dword [sym.imp.GDI32.dll_SetTextJustification]
add ebx, 0x12
mov edx, dword [esp + 0x80]
inc edx
mov dword [esp + 0x80], edx
mov eax, dword [ebp + 8]
movsx ecx, word [eax + 0x5d]
cmp edx, ecx
jl 0x62ab55
mov eax, dword [esp + 0x18]
test eax, eax
je 0x62af41
push 0
mov eax, dword [esp + 0x28]
push eax
call dword [sym.imp.GDI32.dll_SetTextCharacterExtra]
add esp, 0x94
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret 0x18
lea ecx, [esp + 0x34]
mov eax, dword [ebx + 0x2d]
movsx edx, word [eax + 0x7b]
push 0
push edx
mov esi, dword [ebp + 0x14]
push esi
push ecx
mov ecx, dword [ebp + 0x10]
call fcn.0054b91c
mov dword [esp + 0x7c], edi
mov eax, dword [ebp + 0xc]
mov edi, dword [eax + 0xc]
mov eax, dword [edi + 0xc]
add dword [esp + 0x34], eax
mov eax, dword [edi + 0xc]
add dword [esp + 0x3c], eax
mov esi, dword [esp + 0x40]
add esi, dword [edi + 0x10]
mov dword [esp + 0x40], esi
mov edx, dword [esp + 0x38]
add edx, dword [edi + 0x10]
mov dword [esp + 0x38], edx
mov eax, dword [edi + 0x1c]
movzx eax, word [eax]
sub eax, edx
movzx eax, ax
mov dword [esp + 0x38], eax
mov eax, dword [edi + 0x1c]
movzx eax, word [eax]
sub eax, esi
movzx eax, ax
mov dword [esp + 0x40], eax
movzx edx, byte [ebx + 0x84]
and edx, 0x40
shr edx, 6
lea eax, [ebx + 0x6f]
mov ecx, dword [ebp + 0x14]
movsx edi, word [ecx + 0x18]
movzx esi, byte [ebx + 0x83]
and esi, 0x40
shr esi, 6
mov ecx, dword [ebp + 0x1c]
push ecx
push esi
push edi
push eax
push edx
push dword [ebx + 0x75]
lea eax, [esp + 0x4c]
push eax
push dword [ebx + 0x31]
mov ecx, dword [ebp + 0xc]
mov edi, dword [esp + 0x9c]
call fcn.0054aa70
mov edx, dword [ebp + 0x14]
mov word [edx + 0x18], ax
mov eax, dword [esp + 0x34]
test eax, eax
jl 0x62b032
cmp eax, dword [esp + 0x3c]
jge 0x62b032
mov eax, dword [edi + 0x1c]
movzx edx, byte [eax + 0x5e]
test dl, 2
je 0x62b032
mov ebx, dword [ebp + 0xc]
lea edx, [ebx + 0x4c]
lea eax, [esp + 0x34]
push eax
push edx
mov ecx, dword [ebx + 0x10]
call fcn.0059a0d4
add esp, 0x94
pop ebx
pop esi
pop edi
mov esp, ebp
pop ebp
ret 0x18
mov eax, dword [esp + 0x1c]
test eax, eax
jle 0x62a9b6
movsx eax, word [ebx + 0x5f]
mov ecx, dword [esp + 0x1c]
lea esi, [ecx + ecx*4]
cdq
idiv esi
mov esi, eax
test esi, esi
jg 0x62b083
movsx ecx, word [ebx + 0x5b]
mov eax, 0x66666667
imul ecx
mov esi, edx
sar esi, 1
sar ecx, 0x1f
sub esi, ecx
test esi, esi
jg 0x62b083
mov esi, 1
jmp 0x62a9bb
cmp esi, 5
jle 0x62a9bb
mov esi, 5
jmp 0x62a9bb
mov eax, esi
mov esi, dword [esp + 0x20]
mov edi, dword [esp + 0x7c]
mov edx, dword [esp]
sub dword [esp + 0x10], edx
movsx edx, word [ebx + 0x5d]
jmp 0x62ab1a
mov eax, 0xffffffff
jmp 0x62ab1a
mov ecx, dword [esp + 0x70]
xor eax, eax
movzx edx, byte [ecx + eax]
test edx, edx
je 0x62b0d5
movzx edx, byte [ecx + eax + 1]
add eax, 2
test edx, edx
jne 0x62b0c0
dec eax
mov dword [esp + 0x44], eax
mov dword [esp + 0x48], eax
test eax, eax
jne 0x62b0fe
mov eax, dword [esp + 0x7c]
mov edx, dword [eax + 0x65]
mov dword [edx], 0
xor ecx, ecx
mov dword [esp + 0x84], ecx
xor esi, esi
jmp 0x62b258
mov eax, dword [esp + 0x3c]
sub eax, dword [esp + 0x34]
mov dword [esp + 0x4c], eax
mov esi, dword [esp + 0x7c]
mov edx, dword [esi + 0x1c]
push dword [esi + 0x65]
mov edi, dword [esp + 0x74]
push edi
mov eax, dword [esp + 0x4c]
push eax
mov ecx, dword [edx + 2]
lea edx, [esp + 0x5c]
call fcn.00529cc4
mov ecx, esi
mov ecx, dword [ecx + 0x65]
mov esi, dword [esp + 0x44]
mov esi, dword [ecx + esi*4]
mov eax, dword [esp + 0x4c]
cmp esi, eax
jle 0x62b24d
mov eax, dword [ebp + 8]
movsx edi, word [eax + 0x5d]
dec edi
mov edx, dword [esp + 0x80]
cmp edx, edi
je 0x62b22c
mov eax, dword [esp + 0x4c]
push eax
mov edx, dword [esp + 0x48]
call fcn.004f6d00
mov esi, eax
mov eax, dword [esp + 0x44]
cmp esi, eax
jne 0x62b190
xor eax, eax
mov dword [esp + 0x84], eax
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x75]
cmp edx, 4
je 0x62b281
xor esi, esi
jmp 0x62b258
mov eax, dword [esp + 0x6c]
mov dword [esp + 0x48], eax
mov edi, dword [esp + 0x70]
xor eax, eax
mov dword [esp + 0x60], eax
mov dword [esp + 0x2c], esi
mov dword [esp + 0x28], ebx
mov ebx, eax
jmp 0x62b1b2
inc dword [esp + 0x60]
mov ecx, dword [esp + 0x48]
call fcn.0062b4d0
mov esi, eax
test esi, esi
je 0x62b36b
lea ecx, [ebx + esi]
mov dword [esp + 0x44], ecx
mov eax, dword [esp + 0x2c]
cmp eax, ecx
jl 0x62b3ec
push esi
mov eax, dword [esp + 0x4c]
push eax
push edi
call fcn.006a7d10
add esp, 0xc
add edi, esi
add esi, dword [esp + 0x48]
mov ebx, esi
movsx eax, byte [esi]
test eax, eax
je 0x62b204
cmp eax, 0x20
jne 0x62b204
movsx eax, byte [ebx + 1]
inc ebx
test eax, eax
jne 0x62b1f6
sub ebx, esi
push ebx
push esi
push edi
call fcn.006a7d10
add esp, 0xc
add edi, ebx
lea eax, [ebx + esi]
mov dword [esp + 0x48], eax
add ebx, dword [esp + 0x44]
mov ecx, dword [esp + 0x2c]
cmp ebx, ecx
jge 0x62b36b
jmp 0x62b1ae
mov ecx, dword [esp + 0x4c]
imul eax, ecx, 0x2710
cdq
idiv esi
movzx esi, ax
mov dword [esp + 0x64], esi
xor edi, edi
mov dword [esp + 0x84], edi
xor esi, esi
jmp 0x62b258
xor eax, eax
mov dword [esp + 0x84], eax
xor esi, esi
mov edi, dword [esp + 0x48]
mov dword [ebx + 4], edi
mov eax, dword [esp + 0x44]
mov dword [ebx], eax
mov dword [ebx + 8], esi
lea edi, [ebx + 0xc]
mov edx, dword [esp + 0x64]
mov word [edi], dx
mov ecx, dword [esp + 0x84]
mov dword [ebx + 0xe], ecx
jmp 0x62ac7d
mov eax, dword [esp + 0x48]
mov edx, dword [esp + 0x6c]
movsx ecx, byte [eax + edx]
test ecx, ecx
je 0x62b189
mov eax, dword [esp + 0x84]
test eax, eax
je 0x62b2c0
mov eax, dword [esp + 0x7c]
mov edx, dword [eax + 0x1c]
push dword [eax + 0x65]
mov esi, dword [esp + 0x74]
push esi
mov edi, dword [esp + 0x50]
push edi
mov ecx, dword [edx + 2]
lea edx, [esp + 0x5c]
call fcn.00529cc4
mov eax, dword [esp + 0x7c]
mov eax, dword [eax + 0x65]
mov edx, dword [esp + 0x4c]
mov ecx, dword [esp + 0x48]
cmp edx, dword [eax + ecx*4]
jg 0x62b2d8
xor esi, esi
jmp 0x62b258
mov edx, dword [eax + ecx*4]
test ecx, ecx
jle 0x62b319
xor ecx, ecx
xor eax, eax
mov dword [esp + 0x28], ebx
mov edi, dword [esp + 0x48]
mov esi, dword [esp + 0x70]
lea ebx, [ecx + 1]
cmp byte [eax + esi], 0x20
jne 0x62b2fa
mov ecx, ebx
inc eax
cmp eax, edi
jl 0x62b2ef
mov ebx, dword [esp + 0x28]
cmp ecx, 1
jle 0x62b319
mov eax, dword [esp + 0x4c]
sub eax, edx
shl eax, 0x10
xor edx, edx
div ecx
mov esi, eax
jmp 0x62b31b
xor esi, esi
test esi, esi
jbe 0x62b258
mov eax, esi
and eax, 0xffff0000
sar eax, 0x10
push 1
push eax
mov edx, dword [esp + 0x2c]
push edx
call dword [sym.imp.GDI32.dll_SetTextJustification]
mov eax, dword [ebp + 0x18]
test eax, eax
je 0x62b258
mov eax, dword [esp + 0x7c]
mov edx, dword [eax + 0x1c]
push dword [eax + 0x65]
mov edi, dword [esp + 0x74]
push edi
mov eax, dword [esp + 0x50]
push eax
mov ecx, dword [edx + 2]
lea edx, [esp + 0x5c]
call fcn.00529cc4
jmp 0x62b258
mov ebx, dword [esp + 0x28]
mov byte [edi], 0
sub edi, dword [esp + 0x70]
mov dword [esp + 0x44], edi
xor eax, eax
mov dword [esp + 0x84], eax
mov ecx, dword [esp + 0x70]
xor eax, eax
movzx edx, byte [ecx + eax]
test edx, edx
je 0x62b39e
movzx edx, byte [ecx + eax + 1]
add eax, 2
test edx, edx
jne 0x62b389
dec eax
mov edx, dword [esp + 0x70]
lea ecx, [edx + eax - 1]
lea edx, [eax - 1]
test eax, eax
je 0x62b3c4
cmp byte [ecx], 0x20
jne 0x62b3c4
dec ecx
xor eax, eax
test edx, edx
setne al
dec edx
test eax, eax
je 0x62b3c4
cmp byte [ecx], 0x20
je 0x62b3b2
mov byte [ecx + 1], 0
mov ecx, dword [esp + 0x70]
xor eax, eax
movzx edx, byte [ecx + eax]
test edx, edx
je 0x62b3e3
movzx edx, byte [ecx + eax + 1]
add eax, 2
test edx, edx
jne 0x62b3ce
dec eax
mov dword [esp + 0x48], eax
jmp 0x62b17a
mov dword [esp + 0x84], esi
mov edx, ebx
mov eax, dword [esp + 0x60]
mov esi, dword [esp + 0x2c]
mov ebx, dword [esp + 0x28]
lea ecx, [esi - 1]
mov dword [esp + 0x44], ecx
cmp edx, ecx
jge 0x62b36f
mov edx, dword [esp + 0x20]
cmp eax, edx
jge 0x62b36f
mov eax, dword [esp + 0x84]
push eax
mov edx, dword [esp + 0x4c]
push edx
push edi
call fcn.006a7d10
add esp, 0xc
mov eax, dword [esp + 0x70]
mov byte [esi + eax - 1], 0x2d
mov byte [esi + eax], 0
mov edx, 1
mov dword [esp + 0x84], edx
jmp 0x62b383
mov dword [esp + 0x4c], ecx
mov ebx, dword [esp + 0x28]
mov edx, ecx
mov dword [esp + 0x30], edx
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x41]
mov dword [ecx + 8], edx
mov eax, dword [esp + 0x80]
test eax, eax
jle 0x62b4b2
xor edx, edx
xor eax, eax
mov dword [esp + 0x60], esi
mov dword [esp + 0x64], edi
mov dword [esp + 0x28], ebx
mov ebx, dword [esp + 0x80]
mov esi, dword [ebp + 8]
mov ecx, dword [esi + 0x41]
mov edi, dword [ecx]
mov edi, dword [edi + eax]
add dword [ecx + 8], edi
add eax, 0x12
inc edx
cmp edx, ebx
jl 0x62b48c
mov dword [esp + 0x80], ebx
mov esi, dword [esp + 0x60]
mov edi, dword [esp + 0x64]
mov ebx, dword [esp + 0x28]
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0x41]
mov edx, dword [eax + 0x31]
add edx, dword [ecx + 8]
mov dword [ecx + 0xc], edx
mov eax, dword [esp + 0x7c]
mov edx, dword [eax + 0x65]
jmp 0x62ad66