Function at 0x54dc8a
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ecx
push ecx
push ebx
push esi
xor esi, esi
push edi
mov dword [ebp - 4], esi
cmp dword [ebp + 0x18], esi
je 0x54db41
push dword [ebp + 0x10]
call fcn.006a3810
mov edi, dword [ebp + 8]
xor ebx, ebx
pop ecx
movzx eax, ax
inc ebx
mov dword [ebp - 4], eax
mov ecx, edi
push ebx
lea eax, [ebp + 0xc]
push eax
call fcn.0054fe3e
push 2
lea eax, [ebp - 4]
mov ecx, edi
push eax
call fcn.0054fe3e
movzx eax, word [ebp - 4]
mov ecx, edi
push eax
push dword [ebp + 0x10]
call fcn.0054fe3e
jmp 0x54dbd3
push esi
push esi
push 0xffffffffffffffff
push dword [ebp + 0x10]
push esi
push 0xfde9
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov edi, eax
test edi, edi
jle case.0x54dc1c.10
lea eax, [edi + edi]
push eax
call fcn.006a66fd
mov ebx, eax
mov dword [ebp - 8], ebx
pop ecx
test ebx, ebx
je case.0x54dc1c.10
push edi
push ebx
push 0xffffffffffffffff
push dword [ebp + 0x10]
push esi
push 0xfde9
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
xor eax, eax
mov word [ebx + edi*2 - 2], ax
lea eax, [edi*2 - 2]
mov edi, dword [ebp + 8]
xor ebx, ebx
movzx eax, ax
inc ebx
mov dword [ebp - 4], eax
mov ecx, edi
push ebx
lea eax, [ebp + 0xc]
push eax
call fcn.0054fe3e
push 2
lea eax, [ebp - 4]
mov ecx, edi
push eax
call fcn.0054fe3e
movzx eax, word [ebp - 4]
mov ecx, edi
push eax
push dword [ebp - 8]
call fcn.0054fe3e
push dword [ebp - 8]
call fcn.006a389b
pop ecx
mov edx, dword [edi]
test edx, edx
je case.0x54dc1c.10
mov eax, dword [ebp - 4]
movzx ecx, ax
sub edx, ecx
mov dword [ebp - 8], eax
shr dword [ebp - 8], 8
add edx, dword [edi + 4]
xor byte [ebp - 8], al
test ecx, ecx
je 0x54dc0c
mov ecx, esi
mov al, byte [edx + ecx]
not al
xor al, byte [ebp - 8]
mov byte [edx + ecx], al
inc ecx
movzx eax, word [ebp - 4]
cmp ecx, eax
jl 0x54dbf8
movzx eax, byte [ebp + 0xc]
push 0x10
dec eax
pop ecx
cmp eax, ecx
ja case.0x54dc1c.10
jmp dword [eax*4 + 0x54dd61]
push 4
pop eax
push eax
lea ecx, [ebp + 0x14]
mov dword [ebp + 0x18], eax
push ecx
push eax
lea eax, [ebp + 0x18]
mov ecx, edi
push eax
call fcn.0054fe3e
mov ecx, eax
call fcn.0054fe3e
jmp case.0x54dc1c.10
mov dword [ebp + 0x18], ebx
push ebx
lea eax, [ebp + 0x14]
push eax
push 4
jmp 0x54dc2f
push 2
pop eax
mov dword [ebp + 0x18], eax
push eax
jmp 0x54dc4a
push 4
lea eax, [ebp + 0x18]
mov dword [ebp + 0x18], ecx
push eax
mov ecx, edi
call fcn.0054fe3e
push 0x10
push dword [ebp + 0x14]
mov ecx, edi
jmp 0x54dc3c
push 8
pop esi
push 4
lea eax, [ebp + 0x18]
mov dword [ebp + 0x18], esi
push eax
mov ecx, edi
call fcn.0054fe3e
push esi
jmp 0x54dc6d
lea ecx, [ebp + 0x14]
call sym.txupd.exe_public:_int___thiscall_CTXStringA::GetLength_void_const
mov ebx, eax
mov ecx, edi
lea eax, [ebp + 0x14]
mov dword [ebp + 0x18], ebx
push eax
push 4
lea eax, [ebp + 0x18]
push eax
call fcn.0054fe3e
mov ecx, eax
call fcn.0054fe1a
mov ecx, dword [edi]
test ecx, ecx
je case.0x54dc1c.10
mov edx, ebx
sub ecx, ebx
add ecx, dword [edi + 4]
shr edx, 8
xor dl, bl
test ebx, ebx
jle case.0x54dc1c.10
mov al, byte [ecx + esi]
not al
xor al, dl
mov byte [ecx + esi], al
inc esi
cmp esi, ebx
jl 0x54dccd
jmp case.0x54dc1c.10
mov ecx, dword [ebp + 0x14]
mov dword [ebp - 8], esi
test ecx, ecx
je case.0x54dc1c.10
lea edx, [ebp - 8]
mov eax, dword [ecx]
push edx
push ecx
cmp dword [ebp + 0x18], esi
je 0x54dcfc
call dword [eax + 0xa8]
jmp 0x54dd22
call dword [eax + 0xa4]
jmp 0x54dd22
mov ecx, dword [ebp + 0x14]
mov dword [ebp - 8], esi
test ecx, ecx
je case.0x54dc1c.10
lea edx, [ebp - 8]
mov eax, dword [ecx]
push edx
push ecx
cmp dword [ebp + 0x18], esi
je 0x54dd1f
call dword [eax + 0x68]
jmp 0x54dd22
call dword [eax + 0x64]
lea ecx, [ebp - 8]
call fcn.0047d412
lea ecx, [ebp - 8]
mov esi, eax
call fcn.0047d435
push eax
push esi
mov dword [ebp + 0x18], eax
mov ecx, edi
push 4
lea eax, [ebp + 0x18]
push eax
call fcn.0054fe3e
mov ecx, eax
call fcn.0054fe3e
mov eax, dword [ebp - 8]
test eax, eax
je case.0x54dc1c.10
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret