Function at 0x4cc090
Capabilities:
Encode data using xor
Encrypt data using aes
Reference aes constants

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x20
push ebx
push esi
push edi
mov edx, dword [ebp + 0xc]
mov esi, dword [ebp + 8]
movzx ecx, byte [edx + 3]
movzx eax, byte [edx + 2]
shl ecx, 8
or ecx, eax
movzx ebx, byte [edx + 0xf]
movzx eax, byte [edx + 1]
shl ecx, 8
or ecx, eax
shl ebx, 8
movzx eax, byte [edx]
shl ecx, 8
or ecx, eax
movzx eax, byte [edx + 6]
xor ecx, dword [esi + 4]
mov dword [ebp - 0x18], ecx
movzx ecx, byte [edx + 7]
shl ecx, 8
or ecx, eax
movzx eax, byte [edx + 5]
shl ecx, 8
or ecx, eax
movzx eax, byte [edx + 4]
shl ecx, 8
or ecx, eax
movzx eax, byte [edx + 0xa]
xor ecx, dword [esi + 8]
mov dword [ebp + 0xc], ecx
movzx ecx, byte [edx + 0xb]
shl ecx, 8
or ecx, eax
movzx eax, byte [edx + 9]
shl ecx, 8
or ecx, eax
movzx eax, byte [edx + 8]
shl ecx, 8
or ecx, eax
movzx eax, byte [edx + 0xe]
xor ecx, dword [esi + 0xc]
or ebx, eax
movzx eax, byte [edx + 0xd]
shl ebx, 8
or ebx, eax
movzx eax, byte [edx + 0xc]
shl ebx, 8
or ebx, eax
mov eax, ecx
shr eax, 0x18
xor ebx, dword [esi + 0x10]
movzx edx, byte [eax + 0x538e80]
mov eax, ecx
shr eax, 0x10
movzx eax, al
shl edx, 8
movzx eax, byte [eax + 0x538d80]
xor edx, eax
mov eax, ecx
shr eax, 8
movzx eax, al
shl edx, 8
movzx eax, byte [eax + 0x538c80]
xor edx, eax
movzx eax, cl
shl edx, 8
movzx eax, byte [eax + str.cw]
xor edx, eax
mov eax, ebx
shr eax, 0x18
mov dword [ebp - 0x14], edx
movzx ecx, byte [eax + 0x538e80]
mov eax, ebx
shr eax, 0x10
movzx eax, al
shl ecx, 8
movzx eax, byte [eax + 0x538d80]
xor ecx, eax
shl ecx, 8
mov edx, dword [ebp + 0xc]
mov eax, ebx
shr eax, 8
movzx eax, al
movzx eax, byte [eax + 0x538c80]
xor ecx, eax
movzx eax, bl
shl ecx, 8
movzx eax, byte [eax + str.cw]
xor ecx, eax
mov eax, edx
shr eax, 0x18
mov edi, ecx
shl ecx, 0x10
shr edi, 0x10
xor edi, ecx
mov ecx, dword [ebp - 0x14]
movzx esi, byte [eax + 0x538e80]
mov eax, edx
shr eax, 0x10
movzx eax, al
shl esi, 8
movzx eax, byte [eax + 0x538d80]
xor esi, eax
mov eax, edx
shr eax, 8
movzx eax, al
shl esi, 8
movzx eax, byte [eax + 0x538c80]
xor esi, eax
movzx eax, dl
mov edx, dword [ebp - 0x18]
shl esi, 8
movzx eax, byte [eax + str.cw]
xor esi, eax
mov eax, edx
shr eax, 0x18
movzx ebx, byte [eax + 0x538e80]
mov eax, edx
shr eax, 0x10
movzx eax, al
shl ebx, 8
movzx eax, byte [eax + 0x538d80]
xor ebx, eax
mov eax, edx
shr eax, 8
movzx eax, al
shl ebx, 8
movzx eax, byte [eax + 0x538c80]
xor ebx, eax
movzx eax, dl
shl ebx, 8
mov edx, esi
shr edx, 0x10
movzx eax, byte [eax + str.cw]
xor ebx, eax
mov eax, esi
shl eax, 0x10
xor edx, eax
mov dword [ebp - 4], ebx
mov eax, ecx
mov dword [ebp - 0x10], edx
shr eax, 8
mov edx, edi
mov dword [ebp + 0xc], eax
mov eax, ecx
shl eax, 8
xor dword [ebp + 0xc], eax
mov eax, dword [ebp + 0xc]
shl ecx, 8
and eax, 0xff00ff
xor eax, ecx
mov dword [ebp - 0xc], edx
mov ecx, edi
mov dword [ebp + 0xc], eax
shr ecx, 8
xor esi, eax
mov eax, dword [ebp - 4]
and ecx, 0xff00ff
mov dword [ebp - 0x18], ecx
shr ebx, 0x10
shl eax, 0x10
xor edx, esi
xor ebx, eax
shl edx, 8
mov eax, esi
shr eax, 8
xor edx, eax
mov eax, edi
xor eax, esi
and edx, 0xff00ff
mov esi, dword [ebp - 0x10]
shl eax, 8
xor edx, eax
mov eax, dword [ebp + 0xc]
xor edx, ecx
mov ecx, eax
shr ecx, 0x10
xor edx, ebx
shl eax, 0x10
xor ecx, eax
mov eax, esi
xor edi, ecx
shl eax, 8
mov ecx, esi
shr ecx, 8
xor ecx, eax
mov eax, esi
and ecx, 0xff00ff
shl eax, 8
xor ecx, eax
mov esi, edi
xor ebx, ecx
shr esi, 0x10
mov eax, edx
xor eax, edi
shl edi, 0x10
xor dword [ebp - 4], eax
xor esi, edi
xor esi, edx
mov edi, edx
shl edx, 0x10
shr edi, 0x10
xor edi, edx
mov edx, ebx
mov ecx, edi
shr edx, 0x10
shr ecx, 8
mov eax, edi
shl eax, 8
xor ecx, eax
mov eax, edi
and ecx, 0xff00ff
shl eax, 8
xor ecx, eax
mov eax, esi
xor ecx, ebx
shl eax, 8
xor dword [ebp + 0xc], ecx
mov ecx, esi
shr ecx, 8
xor ecx, eax
shl esi, 8
mov eax, dword [ebp - 4]
and ecx, 0xff00ff
xor ecx, esi
shl ebx, 0x10
mov esi, dword [ebp + 8]
xor edx, ebx
xor ecx, dword [esi + 0x14]
xor eax, dword [esi + 0x18]
xor dword [ebp - 0x10], ecx
mov ecx, dword [ebp - 0xc]
mov ebx, ecx
xor ebx, edx
mov dword [ebp - 4], eax
shl ebx, 8
mov eax, edx
shr eax, 8
xor ebx, eax
and ebx, 0xff00ff
xor ecx, edx
shl ecx, 8
xor ebx, ecx
mov eax, dword [ebp + 0xc]
xor eax, dword [esi + 0x20]
mov edx, dword [ebp - 0x10]
mov ecx, edx
shr ecx, 0x10
movzx ecx, cl
mov dword [ebp + 0xc], eax
mov eax, edx
shr eax, 0x18
xor ebx, dword [esi + 0x1c]
mov esi, 2
movzx ecx, byte [ecx + str.cw]
xor ebx, dword [ebp - 0x18]
movzx eax, byte [eax + 0x538c80]
xor ebx, edi
shl eax, 8
xor eax, ecx
mov dword [ebp - 0x18], esi
mov ecx, edx
shl eax, 8
shr ecx, 8
movzx ecx, cl
movzx ecx, byte [ecx + 0x538e80]
xor eax, ecx
movzx ecx, dl
mov edx, dword [ebp - 4]
shl eax, 8
movzx ecx, byte [ecx + 0x538d80]
xor eax, ecx
mov ecx, edx
shr ecx, 0x18
movzx edi, byte [ecx + 0x538c80]
mov ecx, edx
shr ecx, 0x10
movzx ecx, cl
shl edi, 8
movzx ecx, byte [ecx + str.cw]
xor edi, ecx
mov ecx, edx
shr ecx, 8
movzx ecx, cl
shl edi, 8
movzx ecx, byte [ecx + 0x538e80]
xor edi, ecx
movzx ecx, dl
shl edi, 8
movzx ecx, byte [ecx + 0x538d80]
xor edi, ecx
mov ecx, ebx
shr ecx, 0x18
mov dword [ebp - 4], edi
movzx edx, byte [ecx + 0x538c80]
mov ecx, ebx
shr ecx, 0x10
movzx ecx, cl
shl edx, 8
movzx ecx, byte [ecx + str.cw]
xor edx, ecx
mov ecx, ebx
shr ecx, 8
movzx ecx, cl
shl edx, 8
movzx ecx, byte [ecx + 0x538e80]
xor edx, ecx
movzx ecx, bl
shl edx, 8
movzx ecx, byte [ecx + 0x538d80]
xor edx, ecx
mov dword [ebp - 0x10], edx
mov edx, dword [ebp + 0xc]
mov ecx, edx
shr ecx, 0x18
movzx ebx, byte [ecx + 0x538c80]
mov ecx, edx
shr ecx, 0x10
movzx ecx, cl
shl ebx, 8
movzx ecx, byte [ecx + str.cw]
xor ebx, ecx
mov ecx, edx
shl ebx, 8
shr ecx, 8
movzx ecx, cl
movzx ecx, byte [ecx + 0x538e80]
xor ebx, ecx
movzx ecx, dl
mov edx, dword [ebp + 8]
shl ebx, 8
movzx ecx, byte [ecx + 0x538d80]
xor ebx, ecx
movzx ecx, byte [edx]
mov dword [ebp + 0xc], ebx
mov dword [ebp - 0x20], ecx
cmp ecx, esi
jbe 0x4cc9a6
lea ecx, [edx + 0x28]
mov dword [ebp - 0xc], ecx
mov edx, edi
shr ebx, 0x10
shr edx, 0x10
mov ecx, edi
shl ecx, 0x10
xor edx, ecx
mov ecx, dword [ebp + 0xc]
shl ecx, 0x10
xor ebx, ecx
mov dword [ebp - 8], edx
mov ecx, dword [ebp - 0x10]
mov esi, ebx
mov edx, ecx
mov dword [ebp - 0x14], esi
shl ecx, 8
shr edx, 8
xor edx, ecx
mov ecx, dword [ebp - 0x10]
shl ecx, 8
and edx, 0xff00ff
xor edx, ecx
mov ecx, eax
mov dword [ebp + 0xc], edx
mov edx, ebx
xor edi, dword [ebp + 0xc]
shl ecx, 0x10
mov dword [ebp - 4], edi
mov edi, eax
shr edi, 0x10
xor edi, ecx
shr edx, 8
mov ecx, dword [ebp - 4]
and edx, 0xff00ff
xor esi, ecx
mov dword [ebp - 0x1c], edx
shr ecx, 8
shl esi, 8
xor esi, ecx
mov ecx, ebx
xor ecx, dword [ebp - 4]
and esi, 0xff00ff
shl ecx, 8
xor esi, ecx
mov ecx, dword [ebp + 0xc]
xor esi, edx
mov edx, ecx
shl ecx, 0x10
xor esi, edi
shr edx, 0x10
xor edx, ecx
mov ecx, dword [ebp - 8]
xor ebx, edx
mov edx, ecx
shl ecx, 8
shr edx, 8
xor edx, ecx
mov ecx, dword [ebp - 8]
shl ecx, 8
and edx, 0xff00ff
xor edx, ecx
mov ecx, esi
xor edi, edx
xor ecx, ebx
mov dword [ebp - 0x10], edi
xor eax, ecx
mov edi, ebx
shl ebx, 0x10
shr edi, 0x10
xor edi, ebx
mov ebx, esi
xor edi, esi
shr ebx, 0x10
shl esi, 0x10
xor ebx, esi
mov edx, ebx
mov ecx, ebx
shl ecx, 8
shr edx, 8
xor edx, ecx
mov ecx, ebx
and edx, 0xff00ff
shl ecx, 8
xor edx, ecx
mov ecx, dword [ebp - 0x10]
xor edx, ecx
mov esi, ecx
xor dword [ebp + 0xc], edx
mov edx, edi
shl ecx, 0x10
shr edx, 8
shr esi, 0x10
xor esi, ecx
mov ecx, edi
shl ecx, 8
xor edx, ecx
shl edi, 8
mov ecx, dword [ebp - 0xc]
and edx, 0xff00ff
xor edx, dword [ecx - 4]
xor eax, dword [ecx]
xor edx, edi
xor dword [ebp - 8], edx
mov ecx, esi
mov edi, dword [ebp - 0x14]
mov edx, edi
shr ecx, 8
xor edx, esi
shl edx, 8
xor edi, esi
xor edx, ecx
mov esi, dword [ebp - 0xc]
mov ecx, dword [ebp + 0xc]
and edx, 0xff00ff
shl edi, 8
xor edx, edi
xor ecx, dword [esi + 8]
xor edx, dword [esi + 4]
xor edx, dword [ebp - 0x1c]
mov dword [ebp + 0xc], ecx
xor edx, ebx
mov ecx, edx
mov esi, dword [ebp + 0xc]
shr ecx, 0x18
movzx ebx, byte [ecx + 0x538e80]
mov ecx, edx
shr ecx, 0x10
movzx ecx, cl
shl ebx, 8
movzx ecx, byte [ecx + 0x538d80]
xor ebx, ecx
mov ecx, edx
shr ecx, 8
movzx ecx, cl
shl ebx, 8
movzx ecx, byte [ecx + 0x538c80]
xor ebx, ecx
movzx ecx, dl
shl ebx, 8
movzx ecx, byte [ecx + str.cw]
xor ebx, ecx
mov ecx, esi
shr ecx, 0x18
movzx edx, byte [ecx + 0x538e80]
mov ecx, esi
shr ecx, 0x10
movzx ecx, cl
shl edx, 8
movzx ecx, byte [ecx + 0x538d80]
xor edx, ecx
mov ecx, esi
shr ecx, 8
movzx ecx, cl
shl edx, 8
movzx ecx, byte [ecx + 0x538c80]
xor edx, ecx
mov ecx, esi
movzx ecx, cl
shl edx, 8
movzx ecx, byte [ecx + str.cw]
xor edx, ecx
mov ecx, eax
shr ecx, 0x18
movzx esi, byte [ecx + 0x538e80]
mov ecx, eax
shr ecx, 0x10
movzx ecx, cl
mov edi, dword [ebp - 8]
shl esi, 8
movzx ecx, byte [ecx + 0x538d80]
xor esi, ecx
mov ecx, eax
shr ecx, 8
movzx eax, al
movzx ecx, cl
shl esi, 8
movzx eax, byte [eax + str.cw]
movzx ecx, byte [ecx + 0x538c80]
xor esi, ecx
shl esi, 8
xor esi, eax
mov eax, edi
shr eax, 0x18
movzx ecx, byte [eax + 0x538e80]
mov eax, edi
shr eax, 0x10
movzx eax, al
shl ecx, 8
movzx eax, byte [eax + 0x538d80]
xor ecx, eax
mov eax, edi
shr eax, 8
movzx eax, al
shl ecx, 8
movzx eax, byte [eax + 0x538c80]
xor ecx, eax
mov eax, edi
movzx eax, al
mov edi, edx
shl ecx, 8
shl edx, 0x10
shr edi, 0x10
movzx eax, byte [eax + str.cw]
xor edi, edx
xor ecx, eax
mov edx, edi
mov dword [ebp - 8], ecx
mov eax, esi
shl eax, 0x10
mov ecx, esi
shr ecx, 0x10
xor ecx, eax
mov dword [ebp - 0x14], edx
mov dword [ebp - 0x10], ecx
mov eax, ebx
shl eax, 8
mov ecx, ebx
shr ecx, 8
xor ecx, eax
shl ebx, 8
mov eax, dword [ebp - 8]
and ecx, 0xff00ff
xor ecx, ebx
mov ebx, eax
shl eax, 0x10
mov dword [ebp + 0xc], ecx
mov ecx, edi
xor esi, dword [ebp + 0xc]
shr ebx, 0x10
xor edx, esi
xor ebx, eax
shl edx, 8
mov eax, esi
shr ecx, 8
shr eax, 8
and ecx, 0xff00ff
xor edx, eax
mov dword [ebp - 0x1c], ecx
mov eax, edi
and edx, 0xff00ff
xor eax, esi
shl eax, 8
xor edx, eax
xor edx, ecx
mov eax, dword [ebp + 0xc]
xor edx, ebx
mov esi, dword [ebp - 0x10]
mov ecx, eax
shr ecx, 0x10
shl eax, 0x10
xor ecx, eax
mov eax, esi
xor edi, ecx
shl eax, 8
mov ecx, esi
shr ecx, 8
xor ecx, eax
mov eax, esi
and ecx, 0xff00ff
shl eax, 8
xor ecx, eax
mov esi, edi
xor ebx, ecx
shr esi, 0x10
mov eax, edx
xor eax, edi
shl edi, 0x10
xor dword [ebp - 8], eax
xor esi, edi
xor esi, edx
mov edi, edx
shl edx, 0x10
shr edi, 0x10
xor edi, edx
mov edx, ebx
mov ecx, edi
shr edx, 0x10
shr ecx, 8
mov eax, edi
shl eax, 8
xor ecx, eax
mov eax, edi
and ecx, 0xff00ff
shl eax, 8
xor ecx, eax
mov eax, esi
xor ecx, ebx
shl eax, 8
xor dword [ebp + 0xc], ecx
mov ecx, esi
shr ecx, 8
xor ecx, eax
shl ebx, 0x10
mov eax, dword [ebp - 0xc]
and ecx, 0xff00ff
xor edx, ebx
shl esi, 8
xor ecx, dword [eax + 0xc]
mov eax, dword [ebp - 8]
xor ecx, esi
mov esi, dword [ebp - 0xc]
xor dword [ebp - 0x10], ecx
mov ecx, dword [ebp - 0x14]
mov ebx, ecx
xor ebx, edx
xor ecx, edx
xor eax, dword [esi + 0x10]
mov dword [ebp - 8], eax
mov eax, edx
mov edx, dword [ebp - 0x10]
shl ebx, 8
shr eax, 8
xor ebx, eax
shl ecx, 8
mov eax, dword [ebp + 0xc]
and ebx, 0xff00ff
xor eax, dword [esi + 0x18]
xor ebx, ecx
xor ebx, dword [esi + 0x14]
xor ebx, dword [ebp - 0x1c]
mov esi, dword [ebp - 0x18]
xor ebx, edi
add esi, 2
mov dword [ebp + 0xc], eax
mov dword [ebp - 0x18], esi
mov eax, edx
mov ecx, edx
shr ecx, 0x10
movzx ecx, cl
shr eax, 0x18
movzx ecx, byte [ecx + str.cw]
movzx eax, byte [eax + 0x538c80]
shl eax, 8
xor eax, ecx
mov ecx, edx
shr ecx, 8
movzx ecx, cl
shl eax, 8
movzx ecx, byte [ecx + 0x538e80]
xor eax, ecx
movzx ecx, dl
mov edx, dword [ebp - 8]
shl eax, 8
movzx ecx, byte [ecx + 0x538d80]
xor eax, ecx
mov ecx, edx
shr ecx, 0x18
movzx ecx, byte [ecx + 0x538c80]
shl ecx, 8
mov dword [ebp - 4], ecx
mov ecx, edx
shr ecx, 0x10
movzx ecx, cl
mov edi, dword [ebp - 4]
movzx ecx, byte [ecx + str.cw]
xor edi, ecx
mov ecx, edx
shr ecx, 8
movzx ecx, cl
shl edi, 8
movzx ecx, byte [ecx + 0x538e80]
xor edi, ecx
movzx ecx, dl
shl edi, 8
movzx ecx, byte [ecx + 0x538d80]
xor edi, ecx
mov ecx, ebx
shr ecx, 0x18
mov dword [ebp - 4], edi
movzx edx, byte [ecx + 0x538c80]
mov ecx, ebx
shr ecx, 0x10
movzx ecx, cl
shl edx, 8
movzx ecx, byte [ecx + str.cw]
xor edx, ecx
mov ecx, ebx
shr ecx, 8
movzx ecx, cl
shl edx, 8
movzx ecx, byte [ecx + 0x538e80]
xor edx, ecx
movzx ecx, bl
shl edx, 8
movzx ecx, byte [ecx + 0x538d80]
xor edx, ecx
mov dword [ebp - 0x10], edx
mov edx, dword [ebp + 0xc]
mov ecx, edx
shr ecx, 0x18
movzx ebx, byte [ecx + 0x538c80]
mov ecx, edx
shr ecx, 0x10
movzx ecx, cl
shl ebx, 8
movzx ecx, byte [ecx + str.cw]
xor ebx, ecx
mov ecx, edx
shr ecx, 8
movzx ecx, cl
shl ebx, 8
movzx ecx, byte [ecx + 0x538e80]
xor ebx, ecx
movzx ecx, dl
shl ebx, 8
movzx ecx, byte [ecx + 0x538d80]
add dword [ebp - 0xc], 0x20
xor ebx, ecx
mov dword [ebp + 0xc], ebx
cmp esi, dword [ebp - 0x20]
jl 0x4cc4c6
mov edx, dword [ebp + 8]
mov ecx, dword [ebp - 0x10]
add esi, esi
mov ebx, dword [ebp - 4]
pop edi
xor ecx, dword [edx + esi*8 + 0xc]
xor eax, dword [edx + esi*8 + 4]
xor ebx, dword [edx + esi*8 + 8]
mov dword [ebp - 0x10], ecx
mov ecx, dword [ebp + 0xc]
xor ecx, dword [edx + esi*8 + 0x10]
mov edx, dword [ebp + 0x10]
mov dword [ebp + 0xc], ecx
mov ecx, eax
shr ecx, 8
pop esi
mov byte [edx], al
mov byte [edx + 1], cl
mov ecx, eax
shr eax, 0x18
mov byte [edx + 3], al
mov eax, ebx
shr eax, 8
mov byte [edx + 5], al
mov eax, ebx
shr eax, 0x10
shr ecx, 0x10
mov byte [edx + 6], al
mov byte [edx + 2], cl
mov ecx, dword [ebp - 0x10]
mov eax, ecx
shr eax, 8
mov byte [edx + 9], al
mov eax, ecx
shr eax, 0x10
mov byte [edx + 8], cl
shr ecx, 0x18
mov byte [edx + 0xa], al
mov byte [edx + 0xb], cl
mov ecx, dword [ebp + 0xc]
mov eax, ecx
shr eax, 8
mov byte [edx + 0xd], al
mov eax, ecx
mov byte [edx + 4], bl
shr ebx, 0x18
shr eax, 0x10
mov byte [edx + 0xc], cl
shr ecx, 0x18
mov byte [edx + 7], bl
mov byte [edx + 0xe], al
xor eax, eax
mov byte [edx + 0xf], cl
pop ebx
mov esp, ebp
pop ebp
ret