Function at 0x553a93
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x28
push ebx
mov ebx, dword [ebp + 0xc]
test ebx, ebx
jne 0x553aab
mov eax, 0x80004005
jmp 0x553ea7
cmp dword [ebp + 0x10], 0
je 0x553aa1
push edi
mov edi, dword [ebp + 8]
cmp edi, 6
jbe 0x553ea1
cmp byte [ebx], 0x51
jne 0x553ea1
cmp byte [ebx + 1], 0x44
jne 0x553ea1
movzx eax, word [ebx + 4]
sub edi, 6
mov dword [ebp + 0xc], eax
add ebx, 6
push esi
lea eax, [ebp - 8]
xor esi, esi
push eax
mov dword [ebp - 8], esi
call sym.txupd.exe_int___cdecl_Util::Data::CreateTXData_struct_ITXData___
mov eax, dword [ebp - 8]
pop ecx
test eax, eax
je 0x553e71
mov ecx, dword [ebp + 0xc]
movzx edx, cx
mov ecx, dword [eax]
push edx
push eax
mov dword [ebp - 0x1c], edx
call dword [ecx + 0x1a0]
test eax, eax
js 0x553e71
mov dword [ebp - 0x18], esi
cmp dword [ebp - 0x1c], esi
jbe 0x553e54
cmp edi, 7
jl 0x553e52
movzx edx, word [ebx + 1]
mov esi, edi
mov al, byte [ebx]
sub edi, 3
movzx ecx, dx
add ebx, 3
mov byte [ebp + 0xf], al
mov dword [ebp - 0x14], edx
mov dword [ebp - 0x20], ecx
lea eax, [ecx + 4]
cmp edi, eax
jl 0x553e52
lea eax, [ecx + ebx]
mov dword [ebp - 0x24], eax
mov eax, dword [eax]
add eax, 7
add eax, ecx
cmp eax, esi
ja 0x553e52
mov eax, dword [ebp - 0x14]
xor esi, esi
shr edx, 8
xor dl, al
cmp si, ax
jae 0x553b88
mov esi, ebx
mov dword [ebp - 0xc], ecx
mov al, byte [esi]
not al
xor al, dl
mov byte [esi], al
inc esi
sub ecx, 1
jne 0x553b77
mov ecx, dword [ebp - 0x20]
push ecx
push ebx
call fcn.00567fae
mov ebx, dword [ebp - 0x24]
mov esi, eax
pop ecx
pop ecx
lea ecx, [ebp - 4]
call sym.txupd.exe_public:_void___thiscall_CTXStringW::constructor_void_
mov ecx, dword [ebp - 0x14]
movzx eax, cx
push eax
lea eax, [ebp - 4]
push esi
push eax
call sym.txupd.exe_bool___cdecl_Util::Convert::GBKToUnicode_class_CTXStringW___char_const___int_
add esp, 0xc
test al, al
je 0x553e69
mov esi, dword [ebp - 0x14]
mov ecx, dword [ebx]
add ebx, 4
push 0xfffffffffffffffc
pop eax
movzx edx, si
sub eax, edx
mov dword [ebp - 0xc], ecx
add edi, eax
mov dword [ebp + 8], edi
cmp ecx, edi
ja 0x553e97
test ecx, ecx
je case.0x553c23.8
mov dl, byte [ebp + 0xf]
cmp dl, 7
je 0x553bef
cmp dl, 6
jne 0x553c13
mov eax, ecx
xor edx, edx
shr eax, 8
mov esi, edx
xor al, cl
mov dword [ebp - 0x24], eax
test ecx, ecx
je 0x553c15
mov al, byte [esi + ebx]
not al
xor al, byte [ebp - 0x24]
mov byte [esi + ebx], al
inc esi
cmp esi, ecx
jb 0x553c01
jmp 0x553c15
xor edx, edx
movzx eax, byte [ebp + 0xf]
dec eax
cmp eax, 9
ja case.0x553c23.8
jmp dword [eax*4 + 0x553eaf]
cmp ecx, 4
jne 0x553e69
mov esi, dword [ebp - 8]
sub edi, ecx
mov eax, dword [ebx]
add ebx, ecx
mov dword [ebp + 8], edi
lea ecx, [ebp - 4]
push eax
mov edi, dword [esi]
call sym.txupd.exe_public:_wchar_t_const____thiscall_CTXStringW::operator_wchar_t_const__void_const
push eax
push esi
call dword [edi + 0xec]
mov edi, dword [ebp + 8]
jmp case.0x553c23.8
cmp ecx, 1
jne 0x553e69
mov al, byte [ebx]
lea ecx, [ebp - 4]
mov esi, dword [ebp - 8]
inc ebx
mov byte [ebp - 0x28], al
dec edi
push dword [ebp - 0x28]
mov dword [ebp + 8], edi
mov edi, dword [esi]
call sym.txupd.exe_public:_wchar_t_const____thiscall_CTXStringW::operator_wchar_t_const__void_const
push eax
push esi
call dword [edi + 0xf4]
jmp 0x553c52
cmp ecx, 2
jne 0x553e69
mov esi, dword [ebp - 8]
sub edi, ecx
movzx eax, word [ebx]
add ebx, ecx
mov dword [ebp + 8], edi
lea ecx, [ebp - 4]
push eax
mov edi, dword [esi]
call sym.txupd.exe_public:_wchar_t_const____thiscall_CTXStringW::operator_wchar_t_const__void_const
push eax
push esi
call dword [edi + 0x104]
jmp 0x553c52
cmp ecx, 4
jne 0x553e69
mov esi, dword [ebp - 8]
sub edi, ecx
mov eax, dword [ebx]
add ebx, ecx
mov dword [ebp + 8], edi
lea ecx, [ebp - 4]
push eax
mov edi, dword [esi]
call sym.txupd.exe_public:_wchar_t_const____thiscall_CTXStringW::operator_wchar_t_const__void_const
push eax
push esi
call dword [edi + 0x114]
jmp 0x553c52
cmp ecx, 4
jne 0x553e69
mov esi, dword [ebp - 8]
sub edi, ecx
mov eax, dword [ebx]
add ebx, ecx
mov dword [ebp + 8], edi
lea ecx, [ebp - 4]
push eax
mov edi, dword [esi]
call sym.txupd.exe_public:_wchar_t_const____thiscall_CTXStringW::operator_wchar_t_const__void_const
push eax
push esi
call dword [edi + 0x11c]
jmp 0x553c52
lea ecx, [ebp - 0x10]
call sym.txupd.exe_public:_void___thiscall_CTXStringW::constructor_void_
push dword [ebp - 0xc]
lea eax, [ebp - 0x10]
push ebx
push eax
call sym.txupd.exe_bool___cdecl_Util::Convert::GBKToUnicode_class_CTXStringW___char_const___int_
add esp, 0xc
lea ecx, [ebp - 0x10]
test al, al
je 0x553e64
mov esi, dword [ebp - 8]
mov edi, dword [esi]
call sym.txupd.exe_public:_wchar_t____thiscall_CTXStringW::GetBSTR_void_const
push eax
lea ecx, [ebp - 4]
call sym.txupd.exe_public:_wchar_t_const____thiscall_CTXStringW::operator_wchar_t_const__void_const
push eax
push esi
call dword [edi + 0x13c]
mov edi, dword [ebp + 8]
lea ecx, [ebp - 0x10]
add ebx, dword [ebp - 0xc]
sub edi, dword [ebp - 0xc]
call sym.txupd.exe_public:_void___thiscall_CTXStringW::destructor_void_
jmp case.0x553c23.8
push ecx
push ebx
lea ecx, [ebp + 0xc]
mov dword [ebp + 0xc], edx
call fcn.004ee909
mov eax, dword [ebp + 0xc]
mov esi, dword [ebp - 8]
mov dword [ebp - 0x24], esi
test eax, eax
jne 0x553d87
lea eax, [ebp + 0xc]
push eax
call sym.txupd.exe_int___cdecl_Util::Data::CreateTXBuffer_struct_ITXBuffer___
mov eax, dword [ebp + 0xc]
pop ecx
mov esi, dword [esi]
lea ecx, [ebp - 4]
push eax
call sym.txupd.exe_public:_wchar_t_const____thiscall_CTXStringW::operator_wchar_t_const__void_const
push eax
push dword [ebp - 0x24]
call dword [esi + 0x144]
add ebx, dword [ebp - 0xc]
sub edi, dword [ebp - 0xc]
mov eax, dword [ebp + 0xc]
test eax, eax
je case.0x553c23.8
mov ecx, dword [eax]
push eax
call dword [ecx + 8]
jmp case.0x553c23.8
lea eax, [ebp + 0xc]
mov dword [ebp + 0xc], edx
push eax
push ebx
push ecx
call fcn.00553a93
add esp, 0xc
test eax, eax
js 0x553e83
mov esi, dword [ebp - 8]
lea ecx, [ebp - 4]
push dword [ebp + 0xc]
mov edi, dword [esi]
call sym.txupd.exe_public:_wchar_t_const____thiscall_CTXStringW::operator_wchar_t_const__void_const
push eax
push esi
call dword [edi + 0x16c]
mov edi, dword [ebp + 8]
lea ecx, [ebp + 0xc]
add ebx, dword [ebp - 0xc]
sub edi, dword [ebp - 0xc]
call fcn.004d3582
jmp case.0x553c23.8
lea eax, [ebp + 0xc]
mov dword [ebp + 0xc], edx
push eax
push ebx
push ecx
call fcn.0055376b
add esp, 0xc
test eax, eax
js 0x553e8d
mov esi, dword [ebp - 8]
lea ecx, [ebp - 4]
push dword [ebp + 0xc]
mov edi, dword [esi]
call sym.txupd.exe_public:_wchar_t_const____thiscall_CTXStringW::operator_wchar_t_const__void_const
push eax
push esi
call dword [edi + 0x17c]
mov edi, dword [ebp + 8]
lea ecx, [ebp + 0xc]
add ebx, dword [ebp - 0xc]
sub edi, dword [ebp - 0xc]
call fcn.004e03f9
lea ecx, [ebp - 4]
call sym.txupd.exe_public:_void___thiscall_CTXStringW::destructor_void_
mov eax, dword [ebp - 0x18]
inc eax
mov dword [ebp - 0x18], eax
cmp eax, dword [ebp - 0x1c]
jb 0x553b20
xor esi, esi
mov eax, dword [ebp - 8]
mov ecx, dword [ebp + 0x10]
push eax
mov dword [ecx], eax
mov ecx, dword [eax]
call dword [ecx + 4]
jmp 0x553e76
call sym.txupd.exe_public:_void___thiscall_CTXStringW::destructor_void_
lea ecx, [ebp - 4]
call sym.txupd.exe_public:_void___thiscall_CTXStringW::destructor_void_
mov esi, 0x80004005
lea ecx, [ebp - 8]
call fcn.004d3582
mov eax, esi
pop esi
jmp 0x553ea6
lea ecx, [ebp + 0xc]
call fcn.004d3582
jmp 0x553e69
lea ecx, [ebp + 0xc]
call fcn.004e03f9
jmp 0x553e69
lea ecx, [ebp - 4]
call sym.txupd.exe_public:_void___thiscall_CTXStringW::destructor_void_
jmp 0x553e52
mov eax, 0x80004005
pop edi
pop ebx
mov esp, ebp
pop ebp
ret