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

Disassembly:
test dword [0x664b88], 0xfffffe00
jne 0x5b7ab4
test dword [0x664b88], 0xffffffff
jne 0x5b8694
call fcn.006123c8
jmp fcn.005b7a8c
push ebx
mov ebx, esp
and esp, 0xfffffff0
push edi
push esi
push ebp
push ecx
mov eax, 0xa0
call fcn.006021b0
mov ecx, dword [esp + 0xa0]
mov ebp, ecx
mov esi, dword [ebx + 8]
xor edx, edx
mov dword [esp + 0x20], edx
movzx eax, word [esi + 0x5f]
test eax, eax
je 0x5b8178
mov eax, dword [esi + 0x41]
test eax, eax
je 0x5b7af4
mov eax, dword [eax + 0x4e]
mov dword [esp + 0x20], eax
mov eax, dword [ebp + 0x1c]
lea edx, [esi + 0x6b]
lea edi, [esi + 0x6d]
push edi
push edx
push dword [esi + 0x49]
mov ecx, dword [eax + 2]
call fcn.0050b7a4
mov eax, dword [esi + 0x41]
test eax, eax
je 0x5b8187
mov eax, dword [ebx + 0x18]
test eax, eax
jne 0x5b7b31
mov eax, dword [esp + 0x20]
test eax, eax
jne 0x5b7b31
movzx eax, word [esi + 0x5d]
cmp eax, 1
je 0x5b8187
mov eax, 1
mov dword [esp + 0x24], eax
xor eax, eax
mov dword [esp + 0x28], eax
mov eax, dword [0x756258]
mov dword [esp + 0x70], eax
mov eax, dword [0x75625c]
mov dword [esp + 0x74], eax
mov eax, dword [0x756250]
mov dword [esp + 0x78], eax
mov edx, dword [0x756254]
mov dword [esp + 0x7c], edx
mov al, 1
mov byte [esp + 0x10], al
mov edi, dword [ebp + 0x1c]
push 0
mov ecx, dword [edi + 2]
call fcn.0050b9a4
mov eax, dword [ebp + 0x1c]
mov ecx, dword [eax + 2]
call fcn.0050c090
mov dword [esp + 0x2c], eax
mov edx, dword [esi + 0x41]
mov eax, dword [edx]
mov dword [esp + 0x30], eax
cmp word [esi + 0x5d], 1
jle 0x5b7ba3
mov eax, dword [esi + 0x75]
cmp eax, 4
je 0x5b827e
movzx eax, word [0x666a74]
mov word [esi + 0x6f], ax
movzx eax, word [0x666a70]
mov word [esi + 0x6f], ax
mov edi, dword [ebp + 0x1c]
mov edx, dword [edi + 2]
mov eax, dword [edx + 4]
mov dword [esp + 0x34], eax
mov edi, dword [esi + 0x75]
cmp edi, 2
je 0x5b8686
mov edx, 3
mov eax, 1
cmp edi, 3
cmove eax, edx
mov dword [esp + 0x38], eax
mov eax, dword [ebp + 0x61]
mov dword [esp + 0x14], eax
mov eax, dword [esi + 0x31]
mov dword [esp + 0x3c], eax
mov edi, dword [esi + 0x41]
mov edx, dword [edi + 8]
mov dword [esp + 0x50], edx
xor eax, eax
mov al, byte [esi + 0x84]
and eax, 0x40
test eax, 0xffffffc0
je 0x5b7c31
mov eax, dword [esp + 0x2c]
shl eax, 0x10
mov dword [esp + 0x28], eax
je 0x5b7c31
mov edi, eax
shr edi, 0x10
movsx edx, di
push edx
mov eax, dword [esp + 0x38]
push eax
call dword [sym.imp.GDI32.dll_SetTextCharacterExtra]
mov edx, 0xffffffff
mov dword [esp + 0x4c], edx
mov eax, dword [ebx + 0x18]
test eax, eax
je 0x5b7d25
xor eax, eax
mov al, byte [ebp + 0x89]
and eax, 4
test eax, 0xfffffffc
jne 0x5b7c60
movsx eax, word [esi + 0x5d]
jmp 0x5b7d29
lea eax, [esp + 0x70]
push eax
call dword [sym.imp.USER32.dll_GetCursorPos]
xor edi, edi
movsx eax, word [esi + 0x5d]
test eax, eax
jle 0x5b7d29
mov dword [esp], ebp
lea edx, [esp + 0x80]
push edi
push eax
mov eax, dword [ebx + 0x14]
push eax
push edx
mov ecx, dword [ebx + 0x10]
call fcn.00523384
mov eax, dword [ebx + 0xc]
mov eax, dword [eax + 0xc]
mov edx, dword [eax + 0xc]
add dword [esp + 0x80], edx
mov edx, dword [eax + 0xc]
add dword [esp + 0x88], edx
mov ecx, dword [esp + 0x8c]
add ecx, dword [eax + 0x10]
mov dword [esp + 0x8c], ecx
mov edx, dword [esp + 0x84]
add edx, dword [eax + 0x10]
mov dword [esp + 0x84], edx
mov eax, dword [eax + 0x1c]
movzx ebp, word [eax]
sub ebp, edx
and ebp, 0xffff
mov dword [esp + 0x84], ebp
movzx eax, word [eax]
sub eax, ecx
and eax, 0xffff
mov dword [esp + 0x8c], eax
lea ebp, [esp + 0x80]
push dword [esp + 0x74]
push dword [esp + 0x74]
push ebp
call dword [sym.imp.USER32.dll_PtInRect]
cmp eax, 1
je 0x5b82d6
inc edi
movsx eax, word [esi + 0x5d]
cmp edi, eax
jl 0x5b7c7c
mov ebp, dword [esp]
jmp 0x5b7d29
movsx eax, word [esi + 0x5d]
mov edx, dword [esi + 0x2d]
movsx edi, word [edx + 0x7b]
cmp edi, eax
cmovle edi, eax
xor edx, edx
test eax, eax
jle 0x5b8163
mov dword [esp + 0x44], edx
mov dword [esp + 0x40], edi
lea eax, [esp + 0x60]
mov edi, dword [esp + 0x44]
push edi
mov esi, dword [esp + 0x44]
push esi
mov edx, dword [ebx + 0x14]
push edx
push eax
mov ecx, dword [ebx + 0x10]
call fcn.00523384
mov eax, dword [ebx + 0xc]
mov edx, dword [eax + 0xc]
mov eax, dword [edx + 0xc]
add dword [esp + 0x60], eax
mov eax, dword [edx + 0xc]
add dword [esp + 0x68], eax
mov eax, dword [esp + 0x6c]
add eax, dword [edx + 0x10]
mov dword [esp + 0x6c], eax
mov edi, dword [esp + 0x64]
add edi, dword [edx + 0x10]
mov dword [esp + 0x64], edi
mov edx, dword [edx + 0x1c]
movzx esi, word [edx]
sub esi, edi
and esi, 0xffff
mov dword [esp + 0x64], esi
movzx edx, word [edx]
sub edx, eax
and edx, 0xffff
mov dword [esp + 0x6c], edx
mov dword [esp + 0x90], 0
xor eax, eax
mov dword [esp + 0x48], eax
movzx edx, word [0x666a70]
mov word [esp + 0x94], dx
mov esi, dword [esp + 0x14]
mov edi, dword [esp + 0x3c]
mov dl, byte [edi]
inc edi
mov byte [esi], dl
inc esi
test dl, dl
jne 0x5b7dd5
mov eax, dword [esp + 0x20]
test eax, eax
je 0x5b7e1a
mov edi, dword [esp + 0x14]
mov edx, 0x20
mov ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
dec ecx
mov eax, edx
and eax, 0xffff
mov ah, al
push ecx
mov edx, eax
shl eax, 0x10
shr ecx, 2
or eax, edx
rep stosd dword es:[edi], eax
pop ecx
and ecx, 3
rep stosb byte es:[edi], al
mov eax, dword [ebx + 0x18]
test eax, eax
je 0x5b7eb3
mov al, byte [esp + 0x10]
test al, al
je 0x5b7e49
mov edi, dword [ebx + 8]
mov eax, dword [edi + 0x21]
mov esi, dword [ebx + 0x18]
push esi
mov ecx, dword [esp + 0x18]
mov edx, dword [eax + 0x6a]
call fcn.004ecf10
xor al, al
mov byte [esp + 0x10], al
mov eax, dword [ebx + 0x18]
cmp eax, 1
jne 0x5b7eb3
mov edi, dword [esp + 0x14]
xor eax, eax
mov dh, byte [edi]
mov ecx, edi
test dh, dh
je 0x5b7e67
inc ecx
inc eax
mov dl, byte [ecx]
test dl, dl
jne 0x5b7e5f
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], eax
test eax, eax
jne 0x5b82f5
mov eax, dword [ebp + 0x65]
mov dword [eax], 0
mov edx, dword [esp + 0x1c]
mov eax, dword [esp + 0x30]
mov dword [eax + 4], edx
mov edx, dword [esp + 0x18]
mov dword [eax], edx
mov esi, dword [esp + 0x48]
mov dword [eax + 8], esi
lea esi, [eax + 0xc]
movzx edi, word [esp + 0x94]
mov word [eax + 0xc], di
mov edx, dword [esp + 0x90]
mov dword [eax + 0xe], edx
jmp 0x5b7f08
mov eax, dword [esp + 0x30]
mov eax, dword [eax]
cmp eax, 0xffffffff
je 0x5b7e51
mov esi, dword [esp + 0x30]
mov edx, dword [esi + 8]
mov dword [esp + 0x48], edx
test edx, edx
je 0x5b7ee9
mov esi, edx
shr esi, 0x10
movsx edx, si
push 1
push edx
mov eax, dword [esp + 0x3c]
push eax
call dword [sym.imp.GDI32.dll_SetTextJustification]
mov eax, dword [esp + 0x30]
mov eax, dword [eax]
mov esi, dword [ebp + 0x1c]
lea edx, [esp + 0x78]
push dword [ebp + 0x65]
mov edi, dword [esp + 0x18]
push edi
push eax
mov ecx, dword [esi + 2]
call fcn.0050b41c
mov eax, dword [esp + 0x30]
lea esi, [eax + 0xc]
mov edi, eax
mov edx, dword [edi]
mov dword [esp + 0x18], edx
movzx eax, word [esi]
cmp eax, 0x2710
je 0x5b7f53
mov eax, dword [ebp + 0x1c]
push esi
mov ecx, dword [eax + 2]
call fcn.0050b9a4
xor edi, edi
mov eax, dword [esp + 0x18]
test eax, eax
jb 0x5b7f53
mov dword [esp + 0xc], esi
mov esi, eax
mov eax, dword [ebp + 0x65]
push dword [eax + edi*4]
mov ecx, dword [esp + 0x10]
call fcn.00524058
movsx eax, ax
mov edx, dword [ebp + 0x65]
mov dword [edx + edi*4], eax
inc edi
cmp edi, esi
jbe 0x5b7f36
mov edx, dword [esp + 0x30]
mov esi, dword [edx + 4]
mov dword [esp + 0x1c], esi
mov eax, dword [edx + 0xe]
test eax, eax
je 0x5b7f70
mov edx, esi
mov eax, dword [esp + 0x14]
mov byte [edx + eax - 1], 0x2d
mov edx, dword [esp + 0x3c]
add edx, dword [esp + 0x18]
mov dword [esp + 0x3c], edx
mov eax, dword [ebx + 0x18]
test eax, eax
je 0x5b7fbe
mov edx, dword [esp + 0x4c]
mov eax, dword [esp + 0x44]
cmp edx, eax
jne 0x5b7fb9
xor eax, eax
mov edx, dword [esp + 0x18]
test edx, edx
jbe 0x5b867e
mov edi, dword [esp + 0x70]
mov edx, dword [ebp + 0x65]
mov esi, dword [esp + 0x18]
cmp edi, dword [edx + eax*4 + 4]
jl 0x5b85c5
inc eax
cmp eax, esi
jb 0x5b7fa8
jmp 0x5b7fc1
mov edx, dword [ebp + 0x65]
jmp 0x5b7fc1
mov edx, dword [ebp + 0x65]
mov esi, dword [ebp + 0x1c]
lea eax, [esp + 0x60]
mov edi, dword [ebx + 0x1c]
push edi
mov edi, dword [esp + 0x3c]
push edi
mov edi, dword [esp + 0x24]
push dword [edx + edi*4]
push eax
mov edx, dword [esp + 0x24]
push edx
push edi
mov ecx, dword [esi + 2]
call fcn.00579ef0
mov eax, dword [esp + 0x60]
test eax, eax
jl 0x5b801b
cmp eax, dword [esp + 0x68]
jge 0x5b801b
mov edx, dword [ebp + 0x1c]
xor eax, eax
mov al, byte [edx + 0x5e]
and eax, 2
test eax, 0xfffffffe
je 0x5b801b
mov eax, dword [ebx + 0xc]
lea edx, [eax + 0x4c]
lea esi, [esp + 0x60]
push esi
push edx
mov ecx, dword [eax + 0x10]
call fcn.00558be4
mov eax, dword [ebx + 0x1c]
test eax, eax
jne 0x5b812f
mov eax, dword [ebx + 0x18]
test eax, eax
je 0x5b812f
mov eax, dword [esp + 0x50]
test eax, eax
jl 0x5b8123
mov edx, eax
mov eax, dword [esp + 0x18]
cmp edx, eax
jl 0x5b805d
cmp edx, eax
jne 0x5b8123
mov edx, dword [esp + 0x3c]
mov al, byte [edx]
test al, al
jne 0x5b8123
xor eax, eax
mov al, byte [ebp + 0x58]
and eax, 2
test eax, 0xfffffffe
jne 0x5b811a
mov eax, dword [ebx + 8]
mov edi, dword [eax + 0x41]
mov eax, dword [edi + 0x46]
mov dword [esp + 8], eax
mov eax, dword [ebp + 0x65]
mov esi, dword [esp + 0x50]
mov edx, dword [esp + 0x1c]
cmp esi, edx
jge 0x5b8099
mov edx, dword [eax + esi*4 + 4]
sub edx, dword [eax + esi*4]
mov dword [esp + 0xc], edx
jmp 0x5b80a1
mov edx, dword [esp + 0x2c]
mov dword [esp + 0xc], edx
mov edi, dword [esp + 0x60]
mov dword [esp + 4], edi
mov edx, dword [esp + 0x1c]
cmp esi, edx
jle 0x5b80ba
mov eax, dword [eax + edx*4]
add dword [esp + 4], eax
jmp 0x5b80c3
mov edx, esi
mov eax, dword [eax + edx*4]
add dword [esp + 4], eax
mov esi, dword [esp + 0x68]
mov edx, dword [esp + 4]
cmp esi, edx
cmovl edx, esi
mov dword [esp + 4], edx
mov eax, dword [ebp + 0x1c]
mov ecx, dword [eax + 2]
call fcn.0050c0b8
mov edx, dword [esp + 8]
test edx, edx
je 0x5b80ec
add eax, 0xfffffffe
jmp 0x5b80f2
mov eax, dword [ebp + 0x1c]
mov eax, dword [eax + 0x1a]
mov edi, dword [esp + 0x6c]
sub edi, eax
dec edi
mov esi, dword [esp + 0x64]
inc esi
mov edx, dword [esp + 8]
cmp edx, 0
cmove esi, edi
push eax
mov eax, dword [esp + 0x10]
push eax
push esi
mov ecx, ebp
mov edx, dword [esp + 0x10]
call fcn.0050b0b0
mov eax, 0xffffffff
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x50]
sub eax, dword [esp + 0x18]
mov dword [esp + 0x50], eax
mov eax, dword [esp + 0x48]
test eax, eax
je 0x5b8146
push 1
push 0
mov eax, dword [esp + 0x3c]
push eax
call dword [sym.imp.GDI32.dll_SetTextJustification]
add dword [esp + 0x30], 0x12
mov edx, dword [esp + 0x44]
inc edx
mov dword [esp + 0x44], edx
mov esi, dword [ebx + 8]
movsx eax, word [esi + 0x5d]
cmp edx, eax
jl 0x5b7d47
mov eax, dword [esp + 0x28]
test eax, eax
je 0x5b8178
push 0
mov eax, dword [esp + 0x38]
push eax
call dword [sym.imp.GDI32.dll_SetTextCharacterExtra]
add esp, 0xa4
pop ebp
pop esi
pop edi
mov esp, ebx
pop ebx
ret 0x18
lea eax, [esp + 0x60]
mov edx, dword [esi + 0x2d]
movsx edi, word [edx + 0x7b]
push 0
push edi
mov edx, dword [ebx + 0x14]
push edx
push eax
mov ecx, dword [ebx + 0x10]
call fcn.00523384
mov dword [esp], ebp
mov eax, dword [ebx + 0xc]
mov eax, dword [eax + 0xc]
mov edx, dword [eax + 0xc]
add dword [esp + 0x60], edx
mov edx, dword [eax + 0xc]
add dword [esp + 0x68], edx
mov ebp, dword [esp + 0x6c]
add ebp, dword [eax + 0x10]
mov dword [esp + 0x6c], ebp
mov ecx, dword [esp + 0x64]
add ecx, dword [eax + 0x10]
mov dword [esp + 0x64], ecx
mov eax, dword [eax + 0x1c]
movzx edx, word [eax]
sub edx, ecx
and edx, 0xffff
mov dword [esp + 0x64], edx
movzx eax, word [eax]
sub eax, ebp
and eax, 0xffff
mov dword [esp + 0x6c], eax
xor eax, eax
mov al, byte [esi + 0x84]
and eax, 0x40
shr eax, 6
lea edi, [esi + 0x6f]
mov edx, dword [ebx + 0x14]
movsx ecx, word [edx + 0x18]
xor edx, edx
mov dl, byte [esi + 0x83]
and edx, 0x40
shr edx, 6
mov ebp, dword [ebx + 0x1c]
push ebp
push edx
push ecx
push edi
push eax
push dword [esi + 0x75]
lea eax, [esp + 0x78]
push eax
push dword [esi + 0x31]
mov ecx, dword [ebx + 0xc]
mov ebp, dword [esp + 0x20]
call fcn.00522b20
mov edx, dword [ebx + 0x14]
mov word [edx + 0x18], ax
mov eax, dword [esp + 0x60]
test eax, eax
jl 0x5b826f
cmp eax, dword [esp + 0x68]
jge 0x5b826f
mov edx, dword [ebp + 0x1c]
xor eax, eax
mov al, byte [edx + 0x5e]
and eax, 2
test eax, 0xfffffffe
je 0x5b826f
mov eax, dword [ebx + 0xc]
lea edx, [eax + 0x4c]
lea ebp, [esp + 0x60]
push ebp
push edx
mov ecx, dword [eax + 0x10]
call fcn.00558be4
add esp, 0xa4
pop ebp
pop esi
pop edi
mov esp, ebx
pop ebx
ret 0x18
mov eax, dword [esp + 0x2c]
test eax, eax
jle 0x5b7ba3
movsx eax, word [esi + 0x5f]
mov edx, dword [esp + 0x2c]
lea edi, [edx + edx]
add edi, edi
add edi, edx
cdq
idiv edi
test eax, eax
jg 0x5b82b4
movsx edi, word [esi + 0x5b]
mov eax, 0x66666667
imul edi
mov eax, edx
sar eax, 1
sar edi, 0x1f
sub eax, edi
mov edi, 5
cmp eax, 5
mov edx, edi
jg 0x5b82c2
mov edx, eax
mov eax, 1
cmp edx, 1
cmovg eax, edx
mov dword [esp + 0x24], eax
jmp 0x5b7ba3
mov ebp, dword [esp]
mov dword [esp + 0x4c], edi
mov eax, dword [esp + 0x70]
sub eax, dword [esp + 0x80]
mov dword [esp + 0x70], eax
movsx eax, word [esi + 0x5d]
jmp 0x5b7d29
mov esi, dword [esp + 0x68]
sub esi, dword [esp + 0x60]
mov edi, dword [ebp + 0x1c]
lea edx, [esp + 0x78]
push dword [ebp + 0x65]
mov eax, dword [esp + 0x18]
push eax
mov eax, dword [esp + 0x20]
push eax
mov ecx, dword [edi + 2]
call fcn.0050b41c
mov ecx, dword [ebp + 0x65]
mov edi, dword [esp + 0x18]
mov edx, dword [ecx + edi*4]
mov dword [esp + 4], edx
cmp edx, esi
jle 0x5b7e80
mov edx, dword [ebx + 8]
movsx edx, word [edx + 0x5d]
dec edx
mov edi, dword [esp + 0x44]
cmp edi, edx
je 0x5b8365
push esi
mov edx, dword [esp + 0x1c]
call fcn.004ed398
mov edx, dword [esp + 0x18]
cmp eax, edx
jne 0x5b8545
mov edi, dword [ebx + 8]
mov edx, dword [edi + 0x75]
cmp edx, 4
je 0x5b837f
jmp 0x5b7e80
imul eax, esi, 0x2710
cdq
mov esi, dword [esp + 4]
idiv esi
mov word [esp + 0x94], ax
jmp 0x5b7e80
mov edx, dword [esp + 0x1c]
mov edi, dword [esp + 0x3c]
mov dl, byte [edx + edi]
test dl, dl
je 0x5b7e80
mov edx, dword [esp + 0x90]
test edx, edx
je 0x5b83b9
mov edi, dword [ebp + 0x1c]
lea edx, [esp + 0x78]
push dword [ebp + 0x65]
mov eax, dword [esp + 0x18]
push eax
mov eax, dword [esp + 0x24]
push eax
mov ecx, dword [edi + 2]
call fcn.0050b41c
mov edx, dword [ebp + 0x65]
mov edi, dword [esp + 0x1c]
cmp esi, dword [edx + edi*4]
jle 0x5b7e80
xor edi, edi
mov dword [esp + 0x48], edi
xor edi, edi
mov dword [esp + 0xc], edi
mov eax, dword [esp + 0x1c]
mov edi, dword [edx + eax*4]
test eax, eax
jle 0x5b84f7
xor ecx, ecx
mov edx, eax
cmp edx, 8
jl 0x5b84a5
mov edx, eax
and edx, 7
neg edx
add edx, eax
pxor xmm2, xmm2
movdqa xmm3, xmm2
movdqa xmm1, xmmword [0x756220]
movdqa xmm0, xmmword [0x756210]
mov dword [esp], ebp
mov ebp, dword [esp + 0x14]
prefetchnta byte [ecx + ebp + 0x40]
movd xmm4, dword [ecx + ebp]
movdqa xmm5, xmm2
pcmpgtb xmm5, xmm4
punpcklbw xmm4, xmm5
punpcklbw xmm5, xmm5
punpcklwd xmm4, xmm5
movdqa xmm7, xmm1
pcmpeqd xmm7, xmm4
pand xmm7, xmm0
paddd xmm3, xmm7
movd xmm5, dword [ecx + ebp + 4]
movdqa xmm6, xmm2
pcmpgtb xmm6, xmm5
punpcklbw xmm5, xmm6
punpcklbw xmm6, xmm6
punpcklwd xmm5, xmm6
movdqa xmm4, xmm1
pcmpeqd xmm4, xmm5
pand xmm4, xmm0
paddd xmm3, xmm4
add ecx, 8
cmp ecx, edx
jl 0x5b8419
mov ebp, dword [esp]
movdqa xmm1, xmm3
psrldq xmm1, 8
paddd xmm3, xmm1
movdqa xmm0, xmm3
psrldq xmm0, 4
paddd xmm3, xmm0
movd edx, xmm3
mov dword [esp + 0xc], edx
mov edx, dword [esp + 0x1c]
cmp ecx, edx
jge 0x5b84db
mov dword [esp + 4], edi
mov dword [esp + 8], esi
mov dword [esp], ebp
mov edx, dword [esp + 0xc]
mov esi, dword [esp + 0x1c]
mov ebp, dword [esp + 0x14]
lea eax, [edx + 1]
cmp byte [ecx + ebp], 0x20
jne 0x5b84c7
mov edx, eax
inc ecx
cmp ecx, esi
jl 0x5b84bc
mov dword [esp + 0xc], edx
mov edi, dword [esp + 4]
mov esi, dword [esp + 8]
mov ebp, dword [esp]
mov edx, dword [esp + 0xc]
cmp edx, 1
jle 0x5b84f7
sub esi, edi
shl esi, 0x10
mov eax, esi
xor edx, edx
mov edi, dword [esp + 0xc]
div edi
mov dword [esp + 0x48], eax
mov eax, dword [esp + 0x48]
test eax, eax
jbe 0x5b7e80
mov esi, eax
shr esi, 0x10
movsx edx, si
push 1
push edx
mov eax, dword [esp + 0x3c]
push eax
call dword [sym.imp.GDI32.dll_SetTextJustification]
mov eax, dword [ebx + 0x18]
test eax, eax
je 0x5b7e80
mov eax, dword [ebp + 0x1c]
lea edx, [esp + 0x78]
push dword [ebp + 0x65]
mov edi, dword [esp + 0x18]
push edi
mov esi, dword [esp + 0x24]
push esi
mov ecx, dword [eax + 2]
call fcn.0050b41c
jmp 0x5b7e80
lea edx, [esp + 0x90]
push edx
mov edi, dword [esp + 0x28]
push edi
push eax
mov ecx, dword [esp + 0x20]
mov edx, dword [esp + 0x48]
call fcn.005b91b4
mov dword [esp + 0x18], eax
mov edi, dword [esp + 0x14]
xor eax, eax
mov dh, byte [edi]
mov ecx, edi
test dh, dh
je 0x5b857a
inc ecx
inc eax
mov dl, byte [ecx]
test dl, dl
jne 0x5b8572
mov edx, dword [esp + 0x14]
lea edi, [edx + eax - 1]
test eax, eax
je 0x5b858d
cmp byte [eax + edx - 1], 0x20
je 0x5b85b0
mov byte [edi + 1], 0
mov edi, dword [esp + 0x14]
xor eax, eax
mov dh, byte [edi]
mov ecx, edi
test dh, dh
je 0x5b85a7
inc ecx
inc eax
mov dl, byte [ecx]
test dl, dl
jne 0x5b859f
mov dword [esp + 0x1c], eax
jmp 0x5b8355
dec edi
lea edx, [eax - 2]
dec eax
je 0x5b858d
cmp byte [edi], 0x20
jne 0x5b858d
dec edi
dec edx
cmp edx, 0xffffffff
jne 0x5b85b7
jmp 0x5b858d
mov dword [esp + 0x50], eax
mov esi, dword [ebx + 8]
mov edx, dword [esi + 0x41]
mov dword [edx + 8], eax
xor esi, esi
mov eax, dword [esp + 0x44]
test eax, eax
jle 0x5b8667
cmp eax, 5
jl 0x5b8638
lea ecx, [eax - 5]
lea edx, [esi + esi]
add edx, edx
add edx, edx
add edx, esi
add edx, edx
mov dword [esp], ebp
mov eax, dword [ebx + 8]
mov ebp, dword [eax + 0x41]
mov edi, dword [ebp]
mov edi, dword [edx + edi]
add dword [ebp + 8], edi
mov ebp, dword [eax + 0x41]
mov edi, dword [ebp]
mov edi, dword [edx + edi + 0x12]
add dword [ebp + 8], edi
mov edi, dword [eax + 0x41]
mov ebp, dword [edi]
mov ebp, dword [edx + ebp + 0x24]
add dword [edi + 8], ebp
mov ebp, dword [eax + 0x41]
mov edi, dword [ebp]
mov edi, dword [edx + edi + 0x36]
add dword [ebp + 8], edi
add edx, 0x48
add esi, 4
cmp esi, ecx
jle 0x5b85f9
mov ebp, dword [esp]
lea edi, [esi + esi]
add edi, edi
add edi, edi
add edi, esi
add edi, edi
mov dword [esp], ebp
mov edx, dword [esp + 0x44]
mov ecx, dword [ebx + 8]
mov eax, dword [ecx + 0x41]
mov ebp, dword [eax]
mov ebp, dword [edi + ebp]
add dword [eax + 8], ebp
add edi, 0x12
inc esi
cmp esi, edx
jl 0x5b864d
mov dword [esp + 0x44], edx
mov ebp, dword [esp]
mov esi, dword [ebx + 8]
mov eax, dword [esi + 0x41]
mov edx, dword [esi + 0x31]
add edx, dword [eax + 8]
mov dword [eax + 0xc], edx
mov edx, dword [ebp + 0x65]
jmp 0x5b7fc1
mov edx, dword [ebp + 0x65]
jmp 0x5b7fc1
mov eax, 2
mov dword [esp + 0x38], eax
jmp 0x5b7be6
push ebx
mov ebx, esp
and esp, 0xfffffff0
push edi
push esi
push ebp
push ecx
mov eax, 0xa0
call fcn.006021b0
mov ecx, dword [esp + 0xa0]
mov ebp, ecx
mov esi, dword [ebx + 8]
xor eax, eax
mov dword [esp + 4], eax
movzx edx, word [esi + 0x5f]
test edx, edx
je 0x5b8d53
mov eax, dword [esi + 0x41]
test eax, eax
je 0x5b86d4
mov eax, dword [eax + 0x4e]
mov dword [esp + 4], eax
mov edi, dword [ebp + 0x1c]
lea edx, [esi + 0x6b]
lea eax, [esi + 0x6d]
push eax
push edx
push dword [esi + 0x49]
mov ecx, dword [edi + 2]
call fcn.0050b7a4
mov eax, dword [esi + 0x41]
test eax, eax
je 0x5b8d62
mov eax, dword [ebx + 0x18]
test eax, eax
jne 0x5b8711
mov eax, dword [esp + 4]
test eax, eax
jne 0x5b8711
movzx eax, word [esi + 0x5d]
cmp eax, 1
je 0x5b8d62
mov edi, 1
mov dword [esp + 8], edi
xor eax, eax
mov dword [esp + 0xc], eax
mov edx, dword [0x756268]
mov dword [esp + 0x70], edx
mov eax, dword [0x75626c]
mov dword [esp + 0x74], eax
mov eax, dword [0x756260]
mov dword [esp + 0x78], eax
mov eax, dword [0x756264]
mov dword [esp + 0x7c], eax
mov al, 1
mov byte [esp + 0x44], al
mov eax, dword [ebp + 0x1c]
push 0
mov ecx, dword [eax + 2]
call fcn.0050b9a4
mov eax, dword [ebp + 0x1c]
mov ecx, dword [eax + 2]
call fcn.0050c090
mov dword [esp + 0x10], eax
mov eax, dword [esi + 0x41]
mov edx, dword [eax]
mov dword [esp + 0x30], edx
cmp word [esi + 0x5d], 1
jle 0x5b8783
mov eax, dword [esi + 0x75]
cmp eax, 4
je 0x5b8e59
movzx eax, word [0x666a74]
mov word [esi + 0x6f], ax
movzx edx, word [0x666a70]
mov word [esi + 0x6f], dx
mov edi, dword [ebp + 0x1c]
mov eax, dword [edi + 2]
mov eax, dword [eax + 4]
mov dword [esp + 0x14], eax
mov eax, dword [esi + 0x75]
cmp eax, 2
je 0x5b919c
cmp eax, 3
je 0x5b918e
mov eax, 1
mov dword [esp + 0x18], eax
mov edi, dword [ebp + 0x61]
mov dword [esp + 0x40], edi
mov eax, dword [esi + 0x31]
mov dword [esp + 0x24], eax
mov edx, dword [esi + 0x41]
mov eax, dword [edx + 8]
mov dword [esp + 0x38], eax
xor eax, eax
mov al, byte [esi + 0x84]
and eax, 0x40
test eax, 0xffffffc0
je 0x5b880d
mov eax, dword [esp + 0x10]
shl eax, 0x10
mov dword [esp + 0xc], eax
je 0x5b880d
shr eax, 0x10
movsx edx, ax
push edx
mov edi, dword [esp + 0x18]
push edi
call dword [sym.imp.GDI32.dll_SetTextCharacterExtra]
mov eax, 0xffffffff
mov dword [esp + 0x34], eax
mov edx, dword [ebx + 0x18]
test edx, edx
je 0x5b8903
xor eax, eax
mov al, byte [ebp + 0x89]
and eax, 4
test eax, 0xfffffffc
jne 0x5b883c
movsx eax, word [esi + 0x5d]
jmp 0x5b8907
lea eax, [esp + 0x70]
push eax
call dword [sym.imp.USER32.dll_GetCursorPos]
xor edi, edi
movsx eax, word [esi + 0x5d]
test eax, eax
jle 0x5b8907
mov dword [esp], ebp
lea edx, [esp + 0x80]
push edi
push eax
mov eax, dword [ebx + 0x14]
push eax
push edx
mov ecx, dword [ebx + 0x10]
call fcn.00523384
mov ebp, dword [ebx + 0xc]
mov ecx, dword [ebp + 0xc]
mov eax, dword [ecx + 0xc]
add dword [esp + 0x80], eax
mov eax, dword [ecx + 0xc]
add dword [esp + 0x88], eax
mov edx, dword [esp + 0x8c]
add edx, dword [ecx + 0x10]
mov dword [esp + 0x8c], edx
mov eax, dword [esp + 0x84]
add eax, dword [ecx + 0x10]
mov dword [esp + 0x84], eax
mov ebp, dword [ecx + 0x1c]
movzx ecx, word [ebp]
sub ecx, eax
and ecx, 0xffff
mov dword [esp + 0x84], ecx
movzx eax, word [ebp]
sub eax, edx
and eax, 0xffff
mov dword [esp + 0x8c], eax
lea eax, [esp + 0x80]
push dword [esp + 0x74]
push dword [esp + 0x74]
push eax
call dword [sym.imp.USER32.dll_PtInRect]
cmp eax, 1
je 0x5b8ec3
inc edi
movsx eax, word [esi + 0x5d]
cmp edi, eax
jl 0x5b8858
mov ebp, dword [esp]
jmp 0x5b8907
movsx eax, word [esi + 0x5d]
mov edx, dword [esi + 0x2d]
movsx edx, word [edx + 0x7b]
cmp edx, eax
jg 0x5b8914
mov edx, eax
xor edi, edi
test eax, eax
jle 0x5b8d3e
mov dword [esp + 0x20], edi
mov dword [esp + 0x1c], edx
lea edi, [esp + 0x60]
mov eax, dword [esp + 0x20]
push eax
mov edx, dword [esp + 0x20]
push edx
mov esi, dword [ebx + 0x14]
push esi
push edi
mov ecx, dword [ebx + 0x10]
call fcn.00523384
mov edx, dword [ebx + 0xc]
mov edx, dword [edx + 0xc]
mov eax, dword [edx + 0xc]
add dword [esp + 0x60], eax
mov eax, dword [edx + 0xc]
add dword [esp + 0x68], eax
mov eax, dword [esp + 0x6c]
add eax, dword [edx + 0x10]
mov dword [esp + 0x6c], eax
mov esi, dword [esp + 0x64]
add esi, dword [edx + 0x10]
mov dword [esp + 0x64], esi
mov edi, dword [edx + 0x1c]
movzx edx, word [edi]
sub edx, esi
and edx, 0xffff
mov dword [esp + 0x64], edx
movzx edx, word [edi]
sub edx, eax
and edx, 0xffff
mov dword [esp + 0x6c], edx
mov dword [esp + 0x90], 0
xor eax, eax
mov dword [esp + 0x28], eax
movzx eax, word [0x666a70]
mov word [esp + 0x94], ax
mov esi, dword [esp + 0x40]
mov edi, dword [esp + 0x24]
mov dl, byte [edi]
inc edi
mov byte [esi], dl
inc esi
test dl, dl
jne 0x5b89b4
mov eax, dword [esp + 4]
test eax, eax
je 0x5b89f9
mov edi, dword [esp + 0x40]
mov edx, 0x20
mov ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
dec ecx
mov eax, edx
and eax, 0xffff
mov ah, al
push ecx
mov edx, eax
shl eax, 0x10
shr ecx, 2
or eax, edx
rep stosd dword es:[edi], eax
pop ecx
and ecx, 3
rep stosb byte es:[edi], al
mov eax, dword [ebx + 0x18]
test eax, eax
je 0x5b8a92
mov al, byte [esp + 0x44]
test al, al
je 0x5b8a28
mov eax, dword [ebx + 8]
mov edi, dword [eax + 0x21]
mov esi, dword [ebx + 0x18]
push esi
mov ecx, dword [esp + 0x44]
mov edx, dword [edi + 0x6a]
call fcn.004ecf10
xor al, al
mov byte [esp + 0x44], al
mov eax, dword [ebx + 0x18]
cmp eax, 1
jne 0x5b8a92
mov edi, dword [esp + 0x40]
xor eax, eax
mov dh, byte [edi]
mov ecx, edi
test dh, dh
je 0x5b8a46
inc ecx
inc eax
mov dl, byte [ecx]
test dl, dl
jne 0x5b8a3e
mov dword [esp + 0x2c], eax
mov dword [esp + 0x4c], eax
test eax, eax
jne 0x5b8ee2
mov eax, dword [ebp + 0x65]
mov dword [eax], 0
mov edi, dword [esp + 0x4c]
mov eax, dword [esp + 0x30]
mov dword [eax + 4], edi
mov edx, dword [esp + 0x2c]
mov dword [eax], edx
mov esi, dword [esp + 0x28]
mov dword [eax + 8], esi
lea edi, [eax + 0xc]
movzx edx, word [esp + 0x94]
mov word [eax + 0xc], dx
mov edx, dword [esp + 0x90]
mov dword [eax + 0xe], edx
jmp 0x5b8ae7
mov eax, dword [esp + 0x30]
mov eax, dword [eax]
cmp eax, 0xffffffff
je 0x5b8a30
mov edx, dword [esp + 0x30]
mov esi, dword [edx + 8]
mov dword [esp + 0x28], esi
test esi, esi
je 0x5b8ac8
mov eax, esi
shr eax, 0x10
movsx edx, ax
push 1
push edx
mov esi, dword [esp + 0x1c]
push esi
call dword [sym.imp.GDI32.dll_SetTextJustification]
mov eax, dword [esp + 0x30]
mov eax, dword [eax]
mov edi, dword [ebp + 0x1c]
lea edx, [esp + 0x78]
push dword [ebp + 0x65]
mov esi, dword [esp + 0x44]
push esi
push eax
mov ecx, dword [edi + 2]
call fcn.0050b41c
mov eax, dword [esp + 0x30]
lea edi, [eax + 0xc]
mov edx, dword [eax]
mov dword [esp + 0x2c], edx
movzx esi, word [edi]
cmp esi, 0x2710
je 0x5b8b31
mov eax, dword [ebp + 0x1c]
push edi
mov ecx, dword [eax + 2]
call fcn.0050b9a4
xor esi, esi
mov eax, dword [esp + 0x2c]
test eax, eax
jb 0x5b8b31
mov dword [esp + 0x3c], edi
mov edi, eax
mov eax, dword [ebp + 0x65]
push dword [eax + esi*4]
mov ecx, dword [esp + 0x40]
call fcn.00524058
movsx edx, ax
mov eax, dword [ebp + 0x65]
mov dword [eax + esi*4], edx
inc esi
cmp esi, edi
jbe 0x5b8b14
mov edx, dword [esp + 0x30]
mov eax, dword [edx + 4]
mov dword [esp + 0x3c], eax
mov esi, dword [edx + 0xe]
test esi, esi
je 0x5b8b4c
mov edx, dword [esp + 0x40]
mov byte [eax + edx - 1], 0x2d
mov eax, dword [esp + 0x24]
add eax, dword [esp + 0x2c]
mov dword [esp + 0x24], eax
mov edx, dword [ebx + 0x18]
test edx, edx
je 0x5b8b9a
mov eax, dword [esp + 0x34]
mov edx, dword [esp + 0x20]
cmp eax, edx
jne 0x5b8b95
xor eax, eax
mov edx, dword [esp + 0x2c]
test edx, edx
jbe 0x5b9186
mov edx, dword [esp + 0x70]
mov esi, dword [ebp + 0x65]
mov edi, dword [esp + 0x2c]
cmp edx, dword [esi + eax*4 + 4]
jl 0x5b90cd
inc eax
cmp eax, edi
jb 0x5b8b84
jmp 0x5b8b9d
mov esi, dword [ebp + 0x65]
jmp 0x5b8b9d
mov esi, dword [ebp + 0x65]
mov edx, dword [ebp + 0x1c]
lea eax, [esp + 0x60]
mov edi, dword [ebx + 0x1c]
push edi
mov edi, dword [esp + 0x1c]
push edi
mov edi, dword [esp + 0x44]
push dword [esi + edi*4]
push eax
mov esi, dword [esp + 0x50]
push esi
push edi
mov ecx, dword [edx + 2]
call fcn.00579ef0
mov eax, dword [esp + 0x60]
test eax, eax
jl 0x5b8bf7
cmp eax, dword [esp + 0x68]
jge 0x5b8bf7
mov esi, dword [ebp + 0x1c]
xor eax, eax
mov al, byte [esi + 0x5e]
and eax, 2
test eax, 0xfffffffe
je 0x5b8bf7
mov esi, dword [ebx + 0xc]
lea edx, [esi + 0x4c]
lea eax, [esp + 0x60]
push eax
push edx
mov ecx, dword [esi + 0x10]
call fcn.00558be4
mov eax, dword [ebx + 0x1c]
test eax, eax
jne 0x5b8d0a
mov eax, dword [ebx + 0x18]
test eax, eax
je 0x5b8d0a
mov eax, dword [esp + 0x38]
test eax, eax
jl 0x5b8cfe
mov edx, dword [esp + 0x2c]
cmp eax, edx
jl 0x5b8c37
cmp eax, edx
jne 0x5b8cfe
mov esi, dword [esp + 0x24]
mov al, byte [esi]
test al, al
jne 0x5b8cfe
xor eax, eax
mov al, byte [ebp + 0x58]
and eax, 2
test eax, 0xfffffffe
jne 0x5b8cf5
mov eax, dword [ebx + 8]
mov edx, dword [eax + 0x41]
mov esi, dword [edx + 0x46]
mov dword [esp + 0x4c], esi
mov eax, dword [ebp + 0x65]
mov edi, dword [esp + 0x38]
mov edx, dword [esp + 0x3c]
cmp edi, edx
jge 0x5b8c75
mov edx, edi
mov esi, dword [eax + edx*4 + 4]
sub esi, dword [eax + edx*4]
mov dword [esp + 0x48], esi
jmp 0x5b8c7d
mov edx, dword [esp + 0x10]
mov dword [esp + 0x48], edx
mov edx, dword [esp + 0x60]
mov dword [esp + 0x50], edx
mov esi, edi
mov edi, dword [esp + 0x3c]
cmp esi, edi
jle 0x5b8c9a
mov edx, edi
mov eax, dword [eax + edx*4]
add dword [esp + 0x50], eax
jmp 0x5b8ca3
mov edx, esi
mov eax, dword [eax + edx*4]
add dword [esp + 0x50], eax
mov edx, dword [esp + 0x68]
mov eax, dword [esp + 0x50]
cmp eax, edx
jle 0x5b8cb3
mov dword [esp + 0x50], edx
mov eax, dword [ebp + 0x1c]
mov ecx, dword [eax + 2]
call fcn.0050c0b8
mov edx, dword [esp + 0x4c]
test edx, edx
je 0x5b8ccb
add eax, 0xfffffffe
jmp 0x5b8cd1
mov eax, dword [ebp + 0x1c]
mov eax, dword [eax + 0x1a]
test edx, edx
jne 0x5b8cde
mov edx, dword [esp + 0x6c]
sub edx, eax
dec edx
jmp 0x5b8ce3
mov edx, dword [esp + 0x64]
inc edx
push eax
mov eax, dword [esp + 0x4c]
push eax
push edx
mov ecx, ebp
mov edx, dword [esp + 0x5c]
call fcn.0050b0b0
mov eax, 0xffffffff
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x38]
sub eax, dword [esp + 0x2c]
mov dword [esp + 0x38], eax
mov eax, dword [esp + 0x28]
test eax, eax
je 0x5b8d21
push 1
push 0
mov eax, dword [esp + 0x1c]
push eax
call dword [sym.imp.GDI32.dll_SetTextJustification]
add dword [esp + 0x30], 0x12
mov edx, dword [esp + 0x20]
inc edx
mov dword [esp + 0x20], edx
mov eax, dword [ebx + 8]
movsx esi, word [eax + 0x5d]
cmp edx, esi
jl 0x5b8926
mov eax, dword [esp + 0xc]
test eax, eax
je 0x5b8d53
push 0
mov eax, dword [esp + 0x18]
push eax
call dword [sym.imp.GDI32.dll_SetTextCharacterExtra]
add esp, 0xa4
pop ebp
pop esi
pop edi
mov esp, ebx
pop ebx
ret 0x18
lea ecx, [esp + 0x60]
mov eax, dword [esi + 0x2d]
movsx edx, word [eax + 0x7b]
push 0
push edx
mov edi, dword [ebx + 0x14]
push edi
push ecx
mov ecx, dword [ebx + 0x10]
call fcn.00523384
mov dword [esp], ebp
mov eax, dword [ebx + 0xc]
mov edx, dword [eax + 0xc]
mov eax, dword [edx + 0xc]
add dword [esp + 0x60], eax
mov eax, dword [edx + 0xc]
add dword [esp + 0x68], eax
mov edi, dword [esp + 0x6c]
add edi, dword [edx + 0x10]
mov dword [esp + 0x6c], edi
mov eax, dword [esp + 0x64]
add eax, dword [edx + 0x10]
mov dword [esp + 0x64], eax
mov ecx, dword [edx + 0x1c]
movzx edx, word [ecx]
sub edx, eax
and edx, 0xffff
mov dword [esp + 0x64], edx
movzx eax, word [ecx]
sub eax, edi
and eax, 0xffff
mov dword [esp + 0x6c], eax
xor eax, eax
mov al, byte [esi + 0x84]
and eax, 0x40
shr eax, 6
lea ebp, [esi + 0x6f]
mov edx, dword [ebx + 0x14]
movsx edi, word [edx + 0x18]
xor edx, edx
mov dl, byte [esi + 0x83]
and edx, 0x40
shr edx, 6
mov ecx, dword [ebx + 0x1c]
push ecx
push edx
push edi
push ebp
push eax
push dword [esi + 0x75]
lea eax, [esp + 0x78]
push eax
push dword [esi + 0x31]
mov ecx, dword [ebx + 0xc]
mov ebp, dword [esp + 0x20]
call fcn.00522b20
mov edx, dword [ebx + 0x14]
mov word [edx + 0x18], ax
mov eax, dword [esp + 0x60]
test eax, eax
jl 0x5b8e4a
cmp eax, dword [esp + 0x68]
jge 0x5b8e4a
mov ebp, dword [ebp + 0x1c]
xor eax, eax
mov al, byte [ebp + 0x5e]
and eax, 2
test eax, 0xfffffffe
je 0x5b8e4a
mov ebp, dword [ebx + 0xc]
lea edx, [ebp + 0x4c]
lea eax, [esp + 0x60]
push eax
push edx
mov ecx, dword [ebp + 0x10]
call fcn.00558be4
add esp, 0xa4
pop ebp
pop esi
pop edi
mov esp, ebx
pop ebx
ret 0x18
mov eax, dword [esp + 0x10]
test eax, eax
jle 0x5b8783
movsx eax, word [esi + 0x5f]
mov edi, dword [esp + 0x10]
lea ecx, [edi + edi]
add ecx, ecx
add ecx, edi
cdq
idiv ecx
mov dword [esp + 8], eax
test eax, eax
jg 0x5b8e9a
movsx edi, word [esi + 0x5b]
mov eax, 0x66666667
imul edi
sar edx, 1
sar edi, 0x1f
sub edx, edi
test edx, edx
jle 0x5b8eb5
jmp 0x5b91aa
mov eax, dword [esp + 8]
cmp eax, 5
jle 0x5b8783
mov eax, 5
mov dword [esp + 8], eax
jmp 0x5b8783
mov eax, 1
mov dword [esp + 8], eax
jmp 0x5b8783
mov ebp, dword [esp]
mov dword [esp + 0x34], edi
mov eax, dword [esp + 0x70]
sub eax, dword [esp + 0x80]
mov dword [esp + 0x70], eax
movsx eax, word [esi + 0x5d]
jmp 0x5b8907
mov esi, dword [esp + 0x68]
sub esi, dword [esp + 0x60]
mov eax, dword [ebp + 0x1c]
lea edx, [esp + 0x78]
push dword [ebp + 0x65]
mov edi, dword [esp + 0x44]
push edi
mov edi, dword [esp + 0x34]
push edi
mov ecx, dword [eax + 2]
call fcn.0050b41c
mov ecx, dword [ebp + 0x65]
mov edx, edi
mov edi, dword [ecx + edx*4]
mov dword [esp + 0x50], edi
cmp edi, esi
jle 0x5b8a5f
mov edx, dword [ebx + 8]
movsx edx, word [edx + 0x5d]
dec edx
mov edi, dword [esp + 0x20]
cmp edi, edx
je 0x5b8f50
push esi
mov edx, dword [esp + 0x30]
call fcn.004ed398
mov edx, dword [esp + 0x2c]
cmp eax, edx
jne 0x5b9049
mov edx, dword [ebx + 8]
mov edi, dword [edx + 0x75]
cmp edi, 4
je 0x5b8f6a
jmp 0x5b8a5f
imul eax, esi, 0x2710
cdq
mov esi, dword [esp + 0x50]
idiv esi
mov word [esp + 0x94], ax
jmp 0x5b8a5f
mov edi, dword [esp + 0x4c]
mov edx, dword [esp + 0x24]
mov dl, byte [edi + edx]
test dl, dl
je 0x5b8a5f
mov edx, dword [esp + 0x90]
test edx, edx
je 0x5b8fa4
mov eax, dword [ebp + 0x1c]
lea edx, [esp + 0x78]
push dword [ebp + 0x65]
mov edi, dword [esp + 0x44]
push edi
mov edi, dword [esp + 0x54]
push edi
mov ecx, dword [eax + 2]
call fcn.0050b41c
mov edi, dword [ebp + 0x65]
mov edx, dword [esp + 0x4c]
cmp esi, dword [edi + edx*4]
jle 0x5b8a5f
xor edx, edx
mov dword [esp + 0x28], edx
xor ecx, ecx
mov edx, dword [esp + 0x4c]
mov eax, dword [edi + edx*4]
xor edi, edi
test edx, edx
jle 0x5b8ffd
mov dword [esp + 0x3c], esi
mov dword [esp], ebp
mov ebp, edx
mov edx, dword [esp + 0x40]
cmp byte [edi + edx], 0x20
jne 0x5b8fdd
inc ecx
inc edi
cmp edi, ebp
jl 0x5b8fd6
mov esi, dword [esp + 0x3c]
mov ebp, dword [esp]
cmp ecx, 1
jle 0x5b8ffd
sub esi, eax
shl esi, 0x10
mov eax, esi
xor edx, edx
div ecx
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x28]
test eax, eax
jbe 0x5b8a5f
shr eax, 0x10
movsx edx, ax
push 1
push edx
mov esi, dword [esp + 0x1c]
push esi
call dword [sym.imp.GDI32.dll_SetTextJustification]
mov eax, dword [ebx + 0x18]
test eax, eax
je 0x5b8a5f
mov edi, dword [ebp + 0x1c]
lea edx, [esp + 0x78]
push dword [ebp + 0x65]
mov eax, dword [esp + 0x44]
push eax
mov esi, dword [esp + 0x54]
push esi
mov ecx, dword [edi + 2]
call fcn.0050b41c
jmp 0x5b8a5f
lea edi, [esp + 0x90]
push edi
mov edx, dword [esp + 0xc]
push edx
push eax
mov ecx, dword [esp + 0x4c]
mov edx, dword [esp + 0x30]
call fcn.005b91b4
mov dword [esp + 0x2c], eax
mov edi, dword [esp + 0x40]
xor eax, eax
mov dh, byte [edi]
mov ecx, edi
test dh, dh
je 0x5b907e
inc ecx
inc eax
mov dl, byte [ecx]
test dl, dl
jne 0x5b9076
mov edx, dword [esp + 0x40]
lea ecx, [edx + eax - 1]
lea edi, [eax - 1]
test eax, eax
je 0x5b9094
cmp byte [eax + edx - 1], 0x20
je 0x5b90b7
mov byte [ecx + 1], 0
mov edi, dword [esp + 0x40]
xor eax, eax
mov dh, byte [edi]
mov ecx, edi
test dh, dh
je 0x5b90ae
inc ecx
inc eax
mov dl, byte [ecx]
test dl, dl
jne 0x5b90a6
mov dword [esp + 0x4c], eax
jmp 0x5b8f40
dec ecx
add eax, 0xfffffffe
test edi, edi
je 0x5b9094
cmp byte [ecx], 0x20
jne 0x5b9094
dec ecx
dec eax
cmp eax, 0xffffffff
jne 0x5b90bf
jmp 0x5b9094
mov dword [esp + 0x38], eax
mov esi, dword [ebx + 8]
mov edx, dword [esi + 0x41]
mov dword [edx + 8], eax
xor esi, esi
mov eax, dword [esp + 0x20]
test eax, eax
jle 0x5b916f
cmp eax, 5
jl 0x5b9140
lea ecx, [eax - 5]
lea edx, [esi + esi]
add edx, edx
add edx, edx
add edx, esi
add edx, edx
mov dword [esp], ebp
mov eax, dword [ebx + 8]
mov ebp, dword [eax + 0x41]
mov edi, dword [ebp]
mov edi, dword [edx + edi]
add dword [ebp + 8], edi
mov edi, dword [eax + 0x41]
mov ebp, dword [edi]
mov ebp, dword [edx + ebp + 0x12]
add dword [edi + 8], ebp
mov ebp, dword [eax + 0x41]
mov edi, dword [ebp]
mov edi, dword [edx + edi + 0x24]
add dword [ebp + 8], edi
mov ebp, dword [eax + 0x41]
mov edi, dword [ebp]
mov edi, dword [edx + edi + 0x36]
add dword [ebp + 8], edi
add edx, 0x48
add esi, 4
cmp esi, ecx
jle 0x5b9101
mov ebp, dword [esp]
lea edi, [esi + esi]
add edi, edi
add edi, edi
add edi, esi
add edi, edi
mov dword [esp], ebp
mov edx, dword [esp + 0x20]
mov ecx, dword [ebx + 8]
mov eax, dword [ecx + 0x41]
mov ebp, dword [eax]
mov ebp, dword [edi + ebp]
add dword [eax + 8], ebp
add edi, 0x12
inc esi
cmp esi, edx
jl 0x5b9155
mov dword [esp + 0x20], edx
mov ebp, dword [esp]
mov eax, dword [ebx + 8]
mov esi, dword [eax + 0x41]
mov edx, dword [eax + 0x31]
add edx, dword [esi + 8]
mov dword [esi + 0xc], edx
mov esi, dword [ebp + 0x65]
jmp 0x5b8b9d
mov esi, dword [ebp + 0x65]
jmp 0x5b8b9d
mov eax, 3
mov dword [esp + 0x18], eax
jmp 0x5b87c4
mov eax, 2
mov dword [esp + 0x18], eax
jmp 0x5b87c4
mov dword [esp + 8], edx
jmp 0x5b8e9a