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

Disassembly:
test dword [0x7eeab0], 0xfffffe00
jne 0x629408
test dword [0x7eeab0], 0xffffff80
jne 0x62a0ac
test dword [0x7eeab0], 0xffffffff
jne 0x62ad3c
call fcn.006a7fbc
jmp fcn.006293d0
push ebp
mov ebp, esp
and esp, 0xfffffff0
push edi
push esi
push ebx
push ecx
mov eax, 0x90
call fcn.006977b0
mov ecx, dword [esp + 0x90]
mov edi, ecx
mov ebx, dword [ebp + 8]
movsx eax, word [ebx + 0x5f]
test eax, eax
je 0x629a72
mov eax, dword [ebx + 0x41]
test eax, eax
je 0x629444
mov eax, dword [eax + 0x4e]
mov dword [esp + 0x78], eax
jmp 0x62944a
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.00529574
cmp dword [ebx + 0x41], 0
je 0x629a81
mov eax, dword [ebp + 0x18]
test eax, eax
jne 0x629486
mov eax, dword [esp + 0x78]
test eax, eax
jne 0x629486
movsx eax, word [ebx + 0x5d]
cmp eax, 1
je 0x629a81
mov eax, dword [0x6db360]
mov dword [esp + 0x18], eax
mov edx, dword [0x6db364]
mov dword [esp + 0x1c], edx
mov esi, dword [0x6db368]
mov dword [esp + 0x50], esi
mov eax, dword [0x6db36c]
mov dword [esp + 0x54], eax
mov eax, dword [edi + 0x1c]
push 0
mov ecx, dword [eax + 2]
call fcn.00529500
mov eax, dword [edi + 0x1c]
mov ecx, dword [eax + 2]
call fcn.00529ed8
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 0x6294e6
mov eax, dword [ebx + 0x75]
cmp eax, 4
je 0x629b72
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 0x629521
mov eax, 2
mov dword [esp + 0x74], eax
jmp 0x629535
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 0x62957b
mov eax, dword [esp + 0x24]
shl eax, 0x10
mov dword [esp + 0x20], eax
test eax, eax
je 0x629581
sar eax, 0x10
push eax
mov edx, dword [esp + 0x30]
push edx
call dword [sym.imp.GDI32.dll_SetTextCharacterExtra]
jmp 0x629581
xor eax, eax
mov dword [esp + 0x20], eax
mov eax, dword [ebp + 0x18]
test eax, eax
je 0x629593
movzx eax, byte [edi + 0x89]
test al, 4
jne 0x6295a1
movsx edx, word [ebx + 0x5d]
mov eax, 0xffffffff
jmp 0x62964e
lea eax, [esp + 0x18]
push eax
call dword [sym.imp.USER32.dll_GetCursorPos]
movsx edx, word [ebx + 0x5d]
test edx, edx
jle 0x629bda
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.0054bdac
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 0x629bc0
inc esi
movsx edx, word [ebx + 0x5d]
cmp esi, edx
jl 0x6295c4
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 0x629a5d
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.0054bdac
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 0x6296fe
mov eax, dword [esp + 0x78]
test eax, eax
je 0x62972e
mov edi, dword [esp + 0x80]
mov edx, 0x20
xor eax, eax
cmp byte [edi + eax], 0
je 0x62972c
mov byte [edi + eax], dl
add eax, 1
jmp 0x62971e
mov eax, edi
mov eax, dword [ebp + 0x18]
test eax, eax
je 0x629768
mov eax, dword [esp + 0x58]
test eax, eax
je 0x62975c
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.004f7724
xor eax, eax
mov dword [esp + 0x58], eax
mov eax, dword [ebp + 0x18]
cmp eax, 1
je 0x629be4
mov edx, dword [ebx]
cmp edx, 0xffffffff
je 0x629be4
mov esi, dword [ebx + 8]
test esi, esi
je 0x629794
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.0052a130
lea edi, [ebx + 0xc]
mov eax, dword [ebx]
mov dword [esp + 0x84], eax
movzx edx, word [edi]
cmp edx, 0x2710
je 0x629821
mov eax, dword [esp + 0x7c]
mov edx, dword [eax + 0x1c]
push edi
mov ecx, dword [edx + 2]
call fcn.00529500
mov eax, dword [esp + 0x84]
test eax, eax
jb 0x629821
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.0054cdc8
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 0x6297f7
mov esi, dword [esp + 0x64]
mov ebx, dword [esp + 0x30]
mov edi, dword [ebx + 4]
cmp dword [ebx + 0xe], 0
je 0x629836
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 0x629898
mov eax, dword [esp + 0x5c]
mov edx, dword [esp + 0x68]
cmp eax, edx
jne 0x629898
mov eax, dword [esp + 0x84]
test eax, eax
jbe 0x629898
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 0x62a037
inc ecx
cmp ecx, ebx
jb 0x629883
mov ebx, dword [esp + 0x30]
jmp 0x62989f
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.005ce2fc
mov eax, dword [esp + 0x38]
test eax, eax
jl 0x62990a
cmp eax, dword [esp + 0x40]
jge 0x62990a
mov eax, dword [esp + 0x7c]
mov edx, dword [eax + 0x1c]
movzx ecx, byte [edx + 0x5e]
test cl, 2
je 0x62990a
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.0059a548
mov eax, dword [ebp + 0x1c]
test eax, eax
jne 0x629a2f
mov eax, dword [ebp + 0x18]
test eax, eax
je 0x629a2f
mov eax, dword [esp + 0x34]
test eax, eax
jl 0x629a20
mov edx, dword [esp + 0x84]
cmp eax, edx
jl 0x62994e
cmp eax, edx
jne 0x629a20
mov eax, dword [esp + 0x70]
movsx edx, byte [eax]
test edx, edx
jne 0x629a20
mov eax, dword [esp + 0x7c]
movzx edx, byte [eax + 0x58]
test dl, 2
jne 0x629a17
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 0x629992
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 0x62999a
mov eax, dword [esp + 0x24]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x34]
cmp edx, edi
jle 0x6299b5
mov edx, dword [esp + 0x4c]
mov ecx, dword [edx + edi*4]
add ecx, eax
mov dword [esp + 0x34], ecx
jmp 0x6299c4
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.00529eb0
mov edx, dword [esp + 0x48]
test edx, edx
je 0x6299f6
add eax, 0xfffffffe
mov edx, dword [esp + 0x3c]
inc edx
jmp 0x629a05
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.0052a0c8
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 0x629a42
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 0x629685
mov eax, dword [esp + 0x20]
test eax, eax
je 0x629a72
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.0054bdac
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.0054af00
mov edx, dword [ebp + 0x14]
mov word [edx + 0x18], ax
mov eax, dword [esp + 0x38]
test eax, eax
jl 0x629b63
cmp eax, dword [esp + 0x40]
jge 0x629b63
mov eax, dword [edi + 0x1c]
movzx edx, byte [eax + 0x5e]
test dl, 2
je 0x629b63
mov ebx, dword [ebp + 0xc]
lea edx, [ebx + 0x4c]
lea eax, [esp + 0x38]
push eax
push edx
mov ecx, dword [ebx + 0x10]
call fcn.0059a548
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 0x6294e6
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 0x629ba6
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 0x629bb0
mov esi, 5
mov eax, 1
cmp esi, 0
cmovle esi, eax
jmp 0x6294eb
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 0x62964e
mov eax, 0xffffffff
jmp 0x62964e
mov ecx, dword [esp + 0x80]
xor eax, eax
movzx edx, byte [ecx + eax]
test edx, edx
je 0x629c02
movzx edx, byte [ecx + eax + 1]
add eax, 2
test edx, edx
jne 0x629bed
dec eax
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], eax
test eax, eax
jne 0x629c2b
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 0x629d88
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.0052a130
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 0x629d7d
mov eax, dword [ebp + 8]
movsx edi, word [eax + 0x5d]
dec edi
mov edx, dword [esp + 0x68]
cmp edx, edi
je 0x629d5c
mov eax, dword [esp + 0x64]
push eax
mov edx, dword [esp + 0x4c]
call fcn.004f71a8
mov esi, eax
mov eax, dword [esp + 0x48]
cmp esi, eax
jne 0x629cbd
xor eax, eax
mov dword [esp + 0x84], eax
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x75]
cmp edx, 4
je 0x629db1
xor esi, esi
jmp 0x629d88
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 0x629ce2
inc dword [esp + 0x10]
mov ecx, dword [esp + 0x4c]
call fcn.0062b934
mov esi, eax
test esi, esi
je 0x629f3d
lea ecx, [ebx + esi]
mov dword [esp + 0x48], ecx
mov eax, dword [esp + 0x14]
cmp eax, ecx
jl 0x629fd0
push esi
mov eax, dword [esp + 0x50]
push eax
push edi
call fcn.006a8180
add esp, 0xc
add edi, esi
add esi, dword [esp + 0x4c]
mov ebx, esi
movsx eax, byte [esi]
test eax, eax
je 0x629d34
cmp eax, 0x20
jne 0x629d34
movsx eax, byte [ebx + 1]
inc ebx
test eax, eax
jne 0x629d26
sub ebx, esi
push ebx
push esi
push edi
call fcn.006a8180
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 0x629f3d
jmp 0x629cde
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 0x629d88
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 0x6297b6
mov eax, dword [esp + 0x4c]
mov edx, dword [esp + 0x70]
movsx ecx, byte [eax + edx]
test ecx, ecx
je 0x629cb6
mov eax, dword [esp + 0x84]
test eax, eax
je 0x629df3
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.0052a130
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 0x629e0e
xor esi, esi
jmp 0x629d88
mov edx, dword [eax + ecx*4]
test ecx, ecx
jle 0x629edb
mov eax, ecx
cmp eax, 4
jl 0x629f30
mov eax, ecx
and eax, 3
neg eax
add eax, ecx
pxor xmm2, xmm2
mov esi, dword [esp + 0x80]
movdqa xmm1, xmmword [0x6db6b0]
movdqa xmm0, xmmword [0x6db6c0]
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 0x629e4b
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 0x629ec5
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 0x629ea8
mov edx, dword [esp + 0x14]
mov ebx, dword [esp + 0x30]
cmp ecx, 1
jle 0x629edb
mov eax, dword [esp + 0x64]
sub eax, edx
shl eax, 0x10
xor edx, edx
div ecx
mov esi, eax
jmp 0x629edd
xor esi, esi
test esi, esi
jbe 0x629d88
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 0x629d88
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.0052a130
jmp 0x629d88
test eax, eax
jbe 0x629edb
xor ecx, ecx
xor eax, eax
jmp 0x629e95
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 0x629f76
movzx edx, byte [ecx + eax + 1]
add eax, 2
test edx, edx
jne 0x629f61
dec eax
mov edx, dword [esp + 0x80]
lea ecx, [edx + eax - 1]
lea edx, [eax - 1]
test eax, eax
je 0x629fa5
cmp byte [ecx], 0x20
jne 0x629fa5
dec ecx
mov eax, 1
xor esi, esi
cmp edx, 0
cmovne esi, eax
dec edx
test esi, esi
je 0x629fa5
cmp byte [ecx], 0x20
je 0x629f8d
mov byte [ecx + 1], 0
mov ecx, dword [esp + 0x80]
xor eax, eax
movzx edx, byte [ecx + eax]
test edx, edx
je 0x629fc7
movzx edx, byte [ecx + eax + 1]
add eax, 2
test edx, edx
jne 0x629fb2
dec eax
mov dword [esp + 0x4c], eax
jmp 0x629ca7
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 0x629f41
mov edx, dword [esp + 0x28]
cmp eax, edx
jge 0x629f41
mov eax, dword [esp + 0x84]
push eax
mov edx, dword [esp + 0x50]
push edx
push edi
call fcn.006a8180
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 0x629f58
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 0x62a090
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 0x62a06d
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 0x62989f
push ebp
mov ebp, esp
and esp, 0xfffffff0
push edi
push esi
push ebx
push ecx
mov eax, 0x90
call fcn.006977b0
mov ecx, dword [esp + 0x90]
mov edi, ecx
mov ebx, dword [ebp + 8]
movsx eax, word [ebx + 0x5f]
test eax, eax
je 0x62a716
mov eax, dword [ebx + 0x41]
test eax, eax
je 0x62a0e8
mov eax, dword [eax + 0x4e]
mov dword [esp + 0x78], eax
jmp 0x62a0ee
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.00529574
cmp dword [ebx + 0x41], 0
je 0x62a725
mov eax, dword [ebp + 0x18]
test eax, eax
jne 0x62a12a
mov eax, dword [esp + 0x78]
test eax, eax
jne 0x62a12a
movsx eax, word [ebx + 0x5d]
cmp eax, 1
je 0x62a725
mov eax, dword [0x6db370]
mov dword [esp + 0x18], eax
mov edx, dword [0x6db374]
mov dword [esp + 0x1c], edx
mov esi, dword [0x6db378]
mov dword [esp + 0x50], esi
mov eax, dword [0x6db37c]
mov dword [esp + 0x54], eax
mov eax, dword [edi + 0x1c]
push 0
mov ecx, dword [eax + 2]
call fcn.00529500
mov eax, dword [edi + 0x1c]
mov ecx, dword [eax + 2]
call fcn.00529ed8
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 0x62a18a
mov eax, dword [ebx + 0x75]
cmp eax, 4
je 0x62a816
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 0x62a1c5
mov eax, 2
mov dword [esp + 0x74], eax
jmp 0x62a1d9
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 0x62a21f
mov eax, dword [esp + 0x24]
shl eax, 0x10
mov dword [esp + 0x20], eax
test eax, eax
je 0x62a225
sar eax, 0x10
push eax
mov edx, dword [esp + 0x30]
push edx
call dword [sym.imp.GDI32.dll_SetTextCharacterExtra]
jmp 0x62a225
xor eax, eax
mov dword [esp + 0x20], eax
mov eax, dword [ebp + 0x18]
test eax, eax
je 0x62a237
movzx eax, byte [edi + 0x89]
test al, 4
jne 0x62a245
movsx edx, word [ebx + 0x5d]
mov eax, 0xffffffff
jmp 0x62a2f2
lea eax, [esp + 0x18]
push eax
call dword [sym.imp.USER32.dll_GetCursorPos]
movsx edx, word [ebx + 0x5d]
test edx, edx
jle 0x62a87e
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.0054bdac
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 0x62a864
inc esi
movsx edx, word [ebx + 0x5d]
cmp esi, edx
jl 0x62a268
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 0x62a701
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.0054bdac
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 0x62a3a2
mov eax, dword [esp + 0x78]
test eax, eax
je 0x62a3d2
mov edi, dword [esp + 0x80]
mov edx, 0x20
xor eax, eax
cmp byte [edi + eax], 0
je 0x62a3d0
mov byte [edi + eax], dl
add eax, 1
jmp 0x62a3c2
mov eax, edi
mov eax, dword [ebp + 0x18]
test eax, eax
je 0x62a40c
mov eax, dword [esp + 0x58]
test eax, eax
je 0x62a400
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.004f7724
xor eax, eax
mov dword [esp + 0x58], eax
mov eax, dword [ebp + 0x18]
cmp eax, 1
je 0x62a888
mov edx, dword [ebx]
cmp edx, 0xffffffff
je 0x62a888
mov esi, dword [ebx + 8]
test esi, esi
je 0x62a438
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.0052a130
lea edi, [ebx + 0xc]
mov eax, dword [ebx]
mov dword [esp + 0x84], eax
movzx edx, word [edi]
cmp edx, 0x2710
je 0x62a4c5
mov eax, dword [esp + 0x7c]
mov edx, dword [eax + 0x1c]
push edi
mov ecx, dword [edx + 2]
call fcn.00529500
mov eax, dword [esp + 0x84]
test eax, eax
jb 0x62a4c5
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.0054cdc8
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 0x62a49b
mov esi, dword [esp + 0x64]
mov ebx, dword [esp + 0x30]
mov edi, dword [ebx + 4]
cmp dword [ebx + 0xe], 0
je 0x62a4da
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 0x62a53c
mov eax, dword [esp + 0x5c]
mov edx, dword [esp + 0x68]
cmp eax, edx
jne 0x62a53c
mov eax, dword [esp + 0x84]
test eax, eax
jbe 0x62a53c
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 0x62acc5
inc ecx
cmp ecx, ebx
jb 0x62a527
mov ebx, dword [esp + 0x30]
jmp 0x62a543
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.005ce2fc
mov eax, dword [esp + 0x38]
test eax, eax
jl 0x62a5ae
cmp eax, dword [esp + 0x40]
jge 0x62a5ae
mov eax, dword [esp + 0x7c]
mov edx, dword [eax + 0x1c]
movzx ecx, byte [edx + 0x5e]
test cl, 2
je 0x62a5ae
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.0059a548
mov eax, dword [ebp + 0x1c]
test eax, eax
jne 0x62a6d3
mov eax, dword [ebp + 0x18]
test eax, eax
je 0x62a6d3
mov eax, dword [esp + 0x34]
test eax, eax
jl 0x62a6c4
mov edx, dword [esp + 0x84]
cmp eax, edx
jl 0x62a5f2
cmp eax, edx
jne 0x62a6c4
mov eax, dword [esp + 0x70]
movsx edx, byte [eax]
test edx, edx
jne 0x62a6c4
mov eax, dword [esp + 0x7c]
movzx edx, byte [eax + 0x58]
test dl, 2
jne 0x62a6bb
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 0x62a636
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 0x62a63e
mov eax, dword [esp + 0x24]
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x38]
mov edx, dword [esp + 0x34]
cmp edx, edi
jle 0x62a659
mov edx, dword [esp + 0x4c]
mov ecx, dword [edx + edi*4]
add ecx, eax
mov dword [esp + 0x34], ecx
jmp 0x62a668
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.00529eb0
mov edx, dword [esp + 0x48]
test edx, edx
je 0x62a69a
add eax, 0xfffffffe
mov edx, dword [esp + 0x3c]
inc edx
jmp 0x62a6a9
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.0052a0c8
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 0x62a6e6
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 0x62a329
mov eax, dword [esp + 0x20]
test eax, eax
je 0x62a716
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.0054bdac
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.0054af00
mov edx, dword [ebp + 0x14]
mov word [edx + 0x18], ax
mov eax, dword [esp + 0x38]
test eax, eax
jl 0x62a807
cmp eax, dword [esp + 0x40]
jge 0x62a807
mov eax, dword [edi + 0x1c]
movzx edx, byte [eax + 0x5e]
test dl, 2
je 0x62a807
mov ebx, dword [ebp + 0xc]
lea edx, [ebx + 0x4c]
lea eax, [esp + 0x38]
push eax
push edx
mov ecx, dword [ebx + 0x10]
call fcn.0059a548
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 0x62a18a
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 0x62a84a
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 0x62a854
mov esi, 5
mov eax, 1
cmp esi, 0
cmovle esi, eax
jmp 0x62a18f
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 0x62a2f2
mov eax, 0xffffffff
jmp 0x62a2f2
mov ecx, dword [esp + 0x80]
xor eax, eax
movzx edx, byte [ecx + eax]
test edx, edx
je 0x62a8a6
movzx edx, byte [ecx + eax + 1]
add eax, 2
test edx, edx
jne 0x62a891
dec eax
mov dword [esp + 0x48], eax
mov dword [esp + 0x4c], eax
test eax, eax
jne 0x62a8cf
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 0x62aa2c
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.0052a130
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 0x62aa21
mov eax, dword [ebp + 8]
movsx edi, word [eax + 0x5d]
dec edi
mov edx, dword [esp + 0x68]
cmp edx, edi
je 0x62aa00
mov eax, dword [esp + 0x64]
push eax
mov edx, dword [esp + 0x4c]
call fcn.004f71a8
mov esi, eax
mov eax, dword [esp + 0x48]
cmp esi, eax
jne 0x62a961
xor eax, eax
mov dword [esp + 0x84], eax
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x75]
cmp edx, 4
je 0x62aa55
xor esi, esi
jmp 0x62aa2c
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 0x62a986
inc dword [esp + 0x10]
mov ecx, dword [esp + 0x4c]
call fcn.0062b934
mov esi, eax
test esi, esi
je 0x62abcb
lea ecx, [ebx + esi]
mov dword [esp + 0x48], ecx
mov eax, dword [esp + 0x14]
cmp eax, ecx
jl 0x62ac5e
push esi
mov eax, dword [esp + 0x50]
push eax
push edi
call fcn.006a8180
add esp, 0xc
add edi, esi
add esi, dword [esp + 0x4c]
mov ebx, esi
movsx eax, byte [esi]
test eax, eax
je 0x62a9d8
cmp eax, 0x20
jne 0x62a9d8
movsx eax, byte [ebx + 1]
inc ebx
test eax, eax
jne 0x62a9ca
sub ebx, esi
push ebx
push esi
push edi
call fcn.006a8180
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 0x62abcb
jmp 0x62a982
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 0x62aa2c
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 0x62a45a
mov eax, dword [esp + 0x4c]
mov edx, dword [esp + 0x70]
movsx ecx, byte [eax + edx]
test ecx, ecx
je 0x62a95a
mov eax, dword [esp + 0x84]
test eax, eax
je 0x62aa97
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.0052a130
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 0x62aab2
xor esi, esi
jmp 0x62aa2c
mov edx, dword [eax + ecx*4]
test ecx, ecx
jle 0x62ab69
mov eax, ecx
cmp eax, 2
jl 0x62abbe
mov eax, ecx
and eax, 1
neg eax
add eax, ecx
pxor mm2, mm2
xor ecx, ecx
movq mm1, qword [0x6db6e0]
movq mm0, qword [0x6db6e8]
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 0x62aaeb
movq mm0, mm2
psrlq mm0, 0x20
paddd mm2, mm0
movd ecx, mm2
emms
mov esi, dword [esp + 0x4c]
cmp eax, esi
jae 0x62ab53
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 0x62ab36
mov edx, dword [esp + 0x14]
mov ebx, dword [esp + 0x30]
cmp ecx, 1
jle 0x62ab69
mov eax, dword [esp + 0x64]
sub eax, edx
shl eax, 0x10
xor edx, edx
div ecx
mov esi, eax
jmp 0x62ab6b
xor esi, esi
test esi, esi
jbe 0x62aa2c
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 0x62aa2c
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.0052a130
jmp 0x62aa2c
test eax, eax
jbe 0x62ab69
xor ecx, ecx
xor eax, eax
jmp 0x62ab23
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 0x62ac04
movzx edx, byte [ecx + eax + 1]
add eax, 2
test edx, edx
jne 0x62abef
dec eax
mov edx, dword [esp + 0x80]
lea ecx, [edx + eax - 1]
lea edx, [eax - 1]
test eax, eax
je 0x62ac33
cmp byte [ecx], 0x20
jne 0x62ac33
dec ecx
mov eax, 1
xor esi, esi
cmp edx, 0
cmovne esi, eax
dec edx
test esi, esi
je 0x62ac33
cmp byte [ecx], 0x20
je 0x62ac1b
mov byte [ecx + 1], 0
mov ecx, dword [esp + 0x80]
xor eax, eax
movzx edx, byte [ecx + eax]
test edx, edx
je 0x62ac55
movzx edx, byte [ecx + eax + 1]
add eax, 2
test edx, edx
jne 0x62ac40
dec eax
mov dword [esp + 0x4c], eax
jmp 0x62a94b
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 0x62abcf
mov edx, dword [esp + 0x28]
cmp eax, edx
jge 0x62abcf
mov eax, dword [esp + 0x84]
push eax
mov edx, dword [esp + 0x50]
push edx
push edi
call fcn.006a8180
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 0x62abe6
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 0x62ad1e
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 0x62acfb
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 0x62a543
push ebp
mov ebp, esp
and esp, 0xfffffff0
push edi
push esi
push ebx
push ecx
mov eax, 0x90
call fcn.006977b0
mov ecx, dword [esp + 0x90]
mov edi, ecx
mov ebx, dword [ebp + 8]
movsx eax, word [ebx + 0x5f]
test eax, eax
je 0x62b3a5
mov eax, dword [ebx + 0x41]
test eax, eax
je 0x62ad78
mov eax, dword [eax + 0x4e]
mov dword [esp + 0x78], eax
jmp 0x62ad7e
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.00529574
cmp dword [ebx + 0x41], 0
je 0x62b3b4
mov eax, dword [ebp + 0x18]
test eax, eax
jne 0x62adba
mov eax, dword [esp + 0x78]
test eax, eax
jne 0x62adba
movsx eax, word [ebx + 0x5d]
cmp eax, 1
je 0x62b3b4
mov eax, dword [0x6db380]
mov dword [esp + 0x10], eax
mov edx, dword [0x6db384]
mov dword [esp + 0x14], edx
mov esi, dword [0x6db388]
mov dword [esp + 0x50], esi
mov eax, dword [0x6db38c]
mov dword [esp + 0x54], eax
mov eax, dword [edi + 0x1c]
push 0
mov ecx, dword [eax + 2]
call fcn.00529500
mov eax, dword [edi + 0x1c]
mov ecx, dword [eax + 2]
call fcn.00529ed8
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 0x62ae1a
mov eax, dword [ebx + 0x75]
cmp eax, 4
je 0x62b4a5
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 0x62ae55
mov eax, 2
mov dword [esp + 0x74], eax
jmp 0x62ae68
cmp eax, 3
mov eax, 3
je 0x62ae64
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 0x62aeab
mov eax, dword [esp + 0x1c]
shl eax, 0x10
mov dword [esp + 0x18], eax
test eax, eax
je 0x62aeb1
sar eax, 0x10
push eax
mov edx, dword [esp + 0x28]
push edx
call dword [sym.imp.GDI32.dll_SetTextCharacterExtra]
jmp 0x62aeb1
xor eax, eax
mov dword [esp + 0x18], eax
mov eax, dword [ebp + 0x18]
test eax, eax
je 0x62aec3
movzx eax, byte [edi + 0x89]
test al, 4
jne 0x62aed1
movsx edx, word [ebx + 0x5d]
mov eax, 0xffffffff
jmp 0x62af7e
lea eax, [esp + 0x10]
push eax
call dword [sym.imp.USER32.dll_GetCursorPos]
movsx edx, word [ebx + 0x5d]
test edx, edx
jle 0x62b514
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.0054bdac
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 0x62b4fa
inc esi
movsx edx, word [ebx + 0x5d]
cmp esi, edx
jl 0x62aef4
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 0x62af8b
mov ecx, edx
mov dword [esp + 0x68], ecx
test edx, edx
jle 0x62b390
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.0054bdac
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 0x62b032
mov eax, dword [esp + 0x78]
test eax, eax
je 0x62b05f
mov edi, dword [esp + 0x70]
mov edx, 0x20
xor eax, eax
cmp byte [edi + eax], 0
je 0x62b05d
mov byte [edi + eax], dl
add eax, 1
jmp 0x62b04f
mov eax, edi
mov eax, dword [ebp + 0x18]
test eax, eax
je 0x62b096
mov eax, dword [esp + 0x58]
test eax, eax
je 0x62b08a
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.004f7724
xor eax, eax
mov dword [esp + 0x58], eax
mov eax, dword [ebp + 0x18]
cmp eax, 1
je 0x62b51e
mov edx, dword [ebx]
cmp edx, 0xffffffff
je 0x62b51e
mov esi, dword [ebx + 8]
test esi, esi
je 0x62b0c2
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.0052a130
lea edi, [ebx + 0xc]
mov eax, dword [ebx]
mov dword [esp + 0x84], eax
movzx edx, word [edi]
cmp edx, 0x2710
je 0x62b14c
mov eax, dword [esp + 0x7c]
mov edx, dword [eax + 0x1c]
push edi
mov ecx, dword [edx + 2]
call fcn.00529500
mov eax, dword [esp + 0x84]
test eax, eax
jb 0x62b14c
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.0054cdc8
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 0x62b122
mov esi, dword [esp + 0x60]
mov ebx, dword [esp + 0x28]
mov edi, dword [ebx + 4]
cmp dword [ebx + 0xe], 0
je 0x62b15e
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 0x62b1c3
mov eax, dword [esp + 0x5c]
mov edx, dword [esp + 0x80]
cmp eax, edx
jne 0x62b1c3
mov eax, dword [esp + 0x84]
test eax, eax
jbe 0x62b1c3
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 0x62b8b4
inc ecx
cmp ecx, ebx
jb 0x62b1ae
mov ebx, dword [esp + 0x28]
jmp 0x62b1ca
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.005ce2fc
mov eax, dword [esp + 0x34]
test eax, eax
jl 0x62b235
cmp eax, dword [esp + 0x3c]
jge 0x62b235
mov eax, dword [esp + 0x7c]
mov edx, dword [eax + 0x1c]
movzx ecx, byte [edx + 0x5e]
test cl, 2
je 0x62b235
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.0059a548
mov eax, dword [ebp + 0x1c]
test eax, eax
jne 0x62b35c
mov eax, dword [ebp + 0x18]
test eax, eax
je 0x62b35c
mov eax, dword [esp + 0x30]
test eax, eax
jl 0x62b34d
mov edx, dword [esp + 0x84]
cmp eax, edx
jl 0x62b279
cmp eax, edx
jne 0x62b34d
mov eax, dword [esp + 0x6c]
movsx edx, byte [eax]
test edx, edx
jne 0x62b34d
mov eax, dword [esp + 0x7c]
movzx edx, byte [eax + 0x58]
test dl, 2
jne 0x62b344
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 0x62b2bd
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 0x62b2c5
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 0x62b2e2
mov eax, dword [esp + 0x2c]
mov eax, dword [eax + edi*4]
add eax, dword [esp + 0x4c]
jmp 0x62b2ed
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 0x62b2f7
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.00529eb0
mov edx, dword [esp + 0x44]
test edx, edx
je 0x62b31c
add eax, 0xfffffffe
mov edx, dword [esp + 0x38]
inc edx
jmp 0x62b32d
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.0052a0c8
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 0x62b36f
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 0x62afb9
mov eax, dword [esp + 0x18]
test eax, eax
je 0x62b3a5
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.0054bdac
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.0054af00
mov edx, dword [ebp + 0x14]
mov word [edx + 0x18], ax
mov eax, dword [esp + 0x34]
test eax, eax
jl 0x62b496
cmp eax, dword [esp + 0x3c]
jge 0x62b496
mov eax, dword [edi + 0x1c]
movzx edx, byte [eax + 0x5e]
test dl, 2
je 0x62b496
mov ebx, dword [ebp + 0xc]
lea edx, [ebx + 0x4c]
lea eax, [esp + 0x34]
push eax
push edx
mov ecx, dword [ebx + 0x10]
call fcn.0059a548
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 0x62ae1a
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 0x62b4e7
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 0x62b4e7
mov esi, 1
jmp 0x62ae1f
cmp esi, 5
jle 0x62ae1f
mov esi, 5
jmp 0x62ae1f
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 0x62af7e
mov eax, 0xffffffff
jmp 0x62af7e
mov ecx, dword [esp + 0x70]
xor eax, eax
movzx edx, byte [ecx + eax]
test edx, edx
je 0x62b539
movzx edx, byte [ecx + eax + 1]
add eax, 2
test edx, edx
jne 0x62b524
dec eax
mov dword [esp + 0x44], eax
mov dword [esp + 0x48], eax
test eax, eax
jne 0x62b562
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 0x62b6bc
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.0052a130
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 0x62b6b1
mov eax, dword [ebp + 8]
movsx edi, word [eax + 0x5d]
dec edi
mov edx, dword [esp + 0x80]
cmp edx, edi
je 0x62b690
mov eax, dword [esp + 0x4c]
push eax
mov edx, dword [esp + 0x48]
call fcn.004f71a8
mov esi, eax
mov eax, dword [esp + 0x44]
cmp esi, eax
jne 0x62b5f4
xor eax, eax
mov dword [esp + 0x84], eax
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x75]
cmp edx, 4
je 0x62b6e5
xor esi, esi
jmp 0x62b6bc
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 0x62b616
inc dword [esp + 0x60]
mov ecx, dword [esp + 0x48]
call fcn.0062b934
mov esi, eax
test esi, esi
je 0x62b7cf
lea ecx, [ebx + esi]
mov dword [esp + 0x44], ecx
mov eax, dword [esp + 0x2c]
cmp eax, ecx
jl 0x62b850
push esi
mov eax, dword [esp + 0x4c]
push eax
push edi
call fcn.006a8180
add esp, 0xc
add edi, esi
add esi, dword [esp + 0x48]
mov ebx, esi
movsx eax, byte [esi]
test eax, eax
je 0x62b668
cmp eax, 0x20
jne 0x62b668
movsx eax, byte [ebx + 1]
inc ebx
test eax, eax
jne 0x62b65a
sub ebx, esi
push ebx
push esi
push edi
call fcn.006a8180
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 0x62b7cf
jmp 0x62b612
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 0x62b6bc
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 0x62b0e1
mov eax, dword [esp + 0x48]
mov edx, dword [esp + 0x6c]
movsx ecx, byte [eax + edx]
test ecx, ecx
je 0x62b5ed
mov eax, dword [esp + 0x84]
test eax, eax
je 0x62b724
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.0052a130
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 0x62b73c
xor esi, esi
jmp 0x62b6bc
mov edx, dword [eax + ecx*4]
test ecx, ecx
jle 0x62b77d
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 0x62b75e
mov ecx, ebx
inc eax
cmp eax, edi
jl 0x62b753
mov ebx, dword [esp + 0x28]
cmp ecx, 1
jle 0x62b77d
mov eax, dword [esp + 0x4c]
sub eax, edx
shl eax, 0x10
xor edx, edx
div ecx
mov esi, eax
jmp 0x62b77f
xor esi, esi
test esi, esi
jbe 0x62b6bc
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 0x62b6bc
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.0052a130
jmp 0x62b6bc
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 0x62b802
movzx edx, byte [ecx + eax + 1]
add eax, 2
test edx, edx
jne 0x62b7ed
dec eax
mov edx, dword [esp + 0x70]
lea ecx, [edx + eax - 1]
lea edx, [eax - 1]
test eax, eax
je 0x62b828
cmp byte [ecx], 0x20
jne 0x62b828
dec ecx
xor eax, eax
test edx, edx
setne al
dec edx
test eax, eax
je 0x62b828
cmp byte [ecx], 0x20
je 0x62b816
mov byte [ecx + 1], 0
mov ecx, dword [esp + 0x70]
xor eax, eax
movzx edx, byte [ecx + eax]
test edx, edx
je 0x62b847
movzx edx, byte [ecx + eax + 1]
add eax, 2
test edx, edx
jne 0x62b832
dec eax
mov dword [esp + 0x48], eax
jmp 0x62b5de
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 0x62b7d3
mov edx, dword [esp + 0x20]
cmp eax, edx
jge 0x62b7d3
mov eax, dword [esp + 0x84]
push eax
mov edx, dword [esp + 0x4c]
push edx
push edi
call fcn.006a8180
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 0x62b7e7
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 0x62b916
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 0x62b8f0
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 0x62b1ca