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

Disassembly:
push ebp
mov ebp, esp
push ecx
push ebx
mov ebx, dword [ebp + 8]
push esi
push edi
mov esi, ebx
mov edi, ecx
push ebx
shr esi, 2
push edx
lea eax, [esi + 6]
push edi
mov dword [ebp - 4], edi
mov dword [edi + 0xf0], eax
call fcn.00422490
add esp, 0xc
xor edx, edx
test esi, esi
je 0x4179a1
mov edi, edi
mov eax, dword [edi + edx*4]
mov ecx, eax
ror ecx, 8
and ecx, 0xff00ff00
inc edx
rol eax, 8
and eax, 0xff00ff
or ecx, eax
mov dword [edi + edx*4 - 4], ecx
cmp edx, esi
jb 0x417980
cmp ebx, 0x10
je 0x417c49
cmp ebx, 0x18
je 0x417b33
cmp ebx, 0x20
je 0x4179c4
pop edi
pop esi
mov eax, 0xffffff53
pop ebx
mov esp, ebp
pop ebp
ret
mov ecx, dword [edi + 0x1c]
mov eax, ecx
shr eax, 0x10
movzx eax, al
lea esi, [edi + 0x30]
mov edx, dword [eax*4 + str.ccccwwww]
mov eax, ecx
shr eax, 0x18
xor edx, 0x1000000
movzx eax, byte [eax*4 + str.ccccwwww]
and edx, 0xff000000
xor edx, eax
mov eax, ecx
shr eax, 8
movzx eax, al
mov ebx, 4
mov eax, dword [eax*4 + str.ccccwwww]
and eax, 0xff0000
xor edx, eax
movzx eax, cl
lea ecx, [edi + 8]
mov eax, dword [eax*4 + str.ccccwwww]
and eax, 0xff00
xor edx, eax
xor edx, dword [edi]
mov eax, dword [edi + 4]
xor eax, edx
mov dword [ebp + 8], ecx
mov ecx, dword [ecx]
xor ecx, eax
mov dword [edi + 0x24], eax
mov eax, dword [edi + 0xc]
xor eax, ecx
mov dword [edi + 0x20], edx
mov dword [edi + 0x28], ecx
mov dword [edi + 0x2c], eax
mov ecx, dword [esi - 4]
mov eax, ecx
shr eax, 0x10
movzx eax, al
lea esi, [esi + 0x20]
mov edx, dword [eax*4 + str.ccccwwww]
mov eax, ecx
shr eax, 0x18
and edx, 0xff0000
mov eax, dword [eax*4 + str.ccccwwww]
and eax, 0xff000000
xor edx, eax
mov eax, ecx
shr eax, 8
movzx eax, al
add ebx, 4
mov eax, dword [eax*4 + str.ccccwwww]
and eax, 0xff00
xor edx, eax
movzx eax, cl
mov ecx, dword [esi - 0x38]
movzx eax, byte [eax*4 + str.ccccwwww]
xor edx, eax
xor edx, dword [esi - 0x40]
mov eax, dword [esi - 0x3c]
xor eax, edx
mov dword [esi - 0x1c], eax
xor ecx, eax
mov eax, dword [esi - 0x34]
xor eax, ecx
mov dword [esi - 0x14], eax
mov dword [esi - 0x20], edx
mov dword [esi - 0x18], ecx
mov ecx, dword [esi - 0x14]
mov eax, ecx
shr eax, 0x18
movzx edx, byte [eax*4 + str.ccccwwww]
mov eax, ecx
shr eax, 8
movzx eax, al
mov eax, dword [eax*4 + str.ccccwwww]
and eax, 0xff0000
xor edx, eax
mov eax, ecx
shr eax, 0x10
movzx eax, al
mov eax, dword [eax*4 + str.ccccwwww]
and eax, 0xff000000
xor edx, eax
movzx eax, cl
mov eax, dword [eax*4 + str.ccccwwww]
and eax, 0xff00
xor edx, eax
xor edx, dword [ebx + str.CLNT]
xor edx, dword [esi - 0x30]
mov dword [esi - 0x10], edx
mov eax, dword [esi - 0x2c]
xor eax, edx
mov dword [esi - 0xc], eax
mov ecx, dword [esi - 0x28]
xor ecx, eax
mov dword [esi - 8], ecx
mov eax, dword [esi - 0x24]
xor eax, ecx
mov dword [esi - 4], eax
cmp ebx, 0x1c
jne 0x417a42
jmp 0x417d3e
mov ecx, dword [edi + 0x14]
mov eax, ecx
shr eax, 0x10
movzx eax, al
mov ebx, 4
mov edx, dword [eax*4 + str.ccccwwww]
mov eax, ecx
shr eax, 0x18
xor edx, 0x1000000
movzx eax, byte [eax*4 + str.ccccwwww]
and edx, 0xff000000
xor edx, eax
mov eax, ecx
shr eax, 8
movzx eax, al
mov eax, dword [eax*4 + str.ccccwwww]
and eax, 0xff0000
xor edx, eax
movzx eax, cl
lea ecx, [edi + 8]
mov eax, dword [eax*4 + str.ccccwwww]
and eax, 0xff00
xor edx, eax
xor edx, dword [edi]
mov eax, dword [edi + 4]
xor eax, edx
mov dword [ebp + 8], ecx
mov ecx, dword [ecx]
xor ecx, eax
mov dword [edi + 0x1c], eax
mov eax, dword [edi + 0xc]
xor eax, ecx
mov dword [edi + 0x24], eax
mov dword [edi + 0x18], edx
mov dword [edi + 0x20], ecx
lea eax, [edi + 0x28]
mov edx, dword [eax - 0x18]
xor edx, dword [eax - 4]
mov ecx, dword [eax - 0x14]
xor ecx, edx
mov dword [eax + 4], ecx
mov dword [eax], edx
mov edx, dword [eax + 4]
lea eax, [eax + 0x18]
mov ecx, edx
shr ecx, 0x18
add ebx, 4
movzx esi, byte [ecx*4 + str.ccccwwww]
mov ecx, edx
shr ecx, 8
movzx ecx, cl
mov ecx, dword [ecx*4 + str.ccccwwww]
and ecx, 0xff0000
xor esi, ecx
mov ecx, edx
shr ecx, 0x10
movzx ecx, cl
mov ecx, dword [ecx*4 + str.ccccwwww]
and ecx, 0xff000000
xor esi, ecx
movzx ecx, dl
mov ecx, dword [ecx*4 + str.ccccwwww]
and ecx, 0xff00
xor esi, ecx
xor esi, dword [ebx + str.CLNT]
xor esi, dword [eax - 0x28]
mov dword [eax - 0x10], esi
mov ecx, dword [eax - 0x24]
xor ecx, esi
mov dword [eax - 0xc], ecx
mov edx, dword [eax - 0x20]
xor edx, ecx
mov dword [eax - 8], edx
mov ecx, dword [eax - 0x1c]
xor ecx, edx
mov dword [eax - 4], ecx
cmp ebx, 0x20
jne 0x417bb1
jmp 0x417d3e
mov edx, dword [edi + 0xc]
mov eax, edx
shr eax, 0x10
movzx eax, al
lea esi, [edi + 4]
mov ecx, dword [eax*4 + str.ccccwwww]
xor ecx, 0x1000000
and ecx, 0xff000000
mov eax, edx
shr eax, 0x18
mov ebx, 4
movzx eax, byte [eax*4 + str.ccccwwww]
xor ecx, eax
mov eax, edx
shr eax, 8
movzx eax, al
mov eax, dword [eax*4 + str.ccccwwww]
and eax, 0xff0000
xor ecx, eax
movzx eax, dl
mov eax, dword [eax*4 + str.ccccwwww]
and eax, 0xff00
xor ecx, eax
xor ecx, dword [edi]
mov eax, dword [esi]
xor eax, ecx
mov dword [edi + 0x10], ecx
lea ecx, [edi + 8]
mov dword [ebp + 8], ecx
mov ecx, dword [ecx]
xor ecx, eax
mov dword [edi + 0x18], ecx
xor ecx, edx
mov dword [edi + 0x14], eax
mov dword [edi + 0x1c], ecx
mov ecx, dword [esi + 0x18]
lea esi, [esi + 0x10]
mov eax, ecx
shr eax, 0x18
add ebx, 4
movzx edx, byte [eax*4 + str.ccccwwww]
mov eax, ecx
shr eax, 8
movzx eax, al
mov eax, dword [eax*4 + str.ccccwwww]
and eax, 0xff0000
xor edx, eax
mov eax, ecx
shr eax, 0x10
movzx eax, al
mov eax, dword [eax*4 + str.ccccwwww]
and eax, 0xff000000
xor edx, eax
movzx eax, cl
mov eax, dword [eax*4 + str.ccccwwww]
and eax, 0xff00
xor edx, eax
xor edx, dword [ebx + str.CLNT]
xor edx, dword [esi - 4]
mov dword [esi + 0xc], edx
mov eax, dword [esi]
xor eax, edx
mov dword [esi + 0x10], eax
mov ecx, dword [esi + 4]
xor ecx, eax
mov dword [esi + 0x14], ecx
mov eax, dword [esi + 8]
xor eax, ecx
mov dword [esi + 0x18], eax
cmp ebx, 0x28
jne 0x417cc3
cmp dword [ebp + 0x10], 1
jne 0x417f24
mov ebx, dword [edi + 0xf0]
shl ebx, 2
test ebx, ebx
je 0x417d9f
mov esi, dword [ebp + 8]
lea edx, [edi + 8]
xor edi, edi
lea edx, [edx + ebx*4]
mov eax, dword [edx - 8]
mov ecx, dword [esi - 8]
mov dword [esi - 8], eax
mov eax, dword [edx - 4]
mov dword [edx - 8], ecx
mov ecx, dword [esi - 4]
mov dword [esi - 4], eax
mov eax, dword [edx]
mov dword [edx - 4], ecx
mov ecx, dword [esi]
mov dword [esi], eax
mov eax, dword [edx + 4]
mov dword [edx], ecx
mov ecx, dword [esi + 4]
mov dword [esi + 4], eax
add edi, 4
sub ebx, 4
mov dword [edx + 4], ecx
lea esi, [esi + 0x10]
lea edx, [edx - 0x10]
cmp edi, ebx
jb 0x417d60
mov edi, dword [ebp - 4]
mov esi, 1
cmp dword [edi + 0xf0], esi
jbe 0x417f24
lea ebx, [edi + 8]
mov edx, dword [ebx + 8]
lea ebx, [ebx + 0x10]
mov eax, edx
shr eax, 0x18
inc esi
movzx ecx, byte [eax*4 + str.ccccwwww]
mov eax, edx
mov ecx, dword [ecx*4 + 0x43ab10]
shr eax, 0x10
movzx eax, al
shr edx, 8
movzx eax, byte [eax*4 + str.ccccwwww]
xor ecx, dword [eax*4 + 0x43af10]
movzx eax, dl
mov edx, dword [ebx - 4]
movzx eax, byte [eax*4 + str.ccccwwww]
xor ecx, dword [eax*4 + 0x43b310]
movzx eax, byte [ebx - 8]
movzx eax, byte [eax*4 + str.ccccwwww]
xor ecx, dword [eax*4 + 0x43b710]
mov eax, edx
shr eax, 0x18
mov dword [ebx - 8], ecx
movzx ecx, byte [eax*4 + str.ccccwwww]
mov eax, edx
mov ecx, dword [ecx*4 + 0x43ab10]
shr eax, 0x10
movzx eax, al
shr edx, 8
movzx eax, byte [eax*4 + str.ccccwwww]
xor ecx, dword [eax*4 + 0x43af10]
movzx eax, dl
mov edx, dword [ebx]
movzx eax, byte [eax*4 + str.ccccwwww]
xor ecx, dword [eax*4 + 0x43b310]
movzx eax, byte [ebx - 4]
movzx eax, byte [eax*4 + str.ccccwwww]
xor ecx, dword [eax*4 + 0x43b710]
mov eax, edx
shr eax, 0x18
mov dword [ebx - 4], ecx
movzx ecx, byte [eax*4 + str.ccccwwww]
mov eax, edx
mov ecx, dword [ecx*4 + 0x43ab10]
shr eax, 0x10
movzx eax, al
shr edx, 8
movzx eax, byte [eax*4 + str.ccccwwww]
xor ecx, dword [eax*4 + 0x43af10]
movzx eax, dl
mov edx, dword [ebx + 4]
movzx eax, byte [eax*4 + str.ccccwwww]
xor ecx, dword [eax*4 + 0x43b310]
movzx eax, byte [ebx]
movzx eax, byte [eax*4 + str.ccccwwww]
xor ecx, dword [eax*4 + 0x43b710]
mov eax, edx
shr eax, 0x18
mov dword [ebx], ecx
movzx ecx, byte [eax*4 + str.ccccwwww]
mov eax, edx
mov ecx, dword [ecx*4 + 0x43ab10]
shr eax, 0x10
movzx eax, al
shr edx, 8
movzx eax, byte [eax*4 + str.ccccwwww]
xor ecx, dword [eax*4 + 0x43af10]
movzx eax, dl
movzx eax, byte [eax*4 + str.ccccwwww]
xor ecx, dword [eax*4 + 0x43b310]
movzx eax, byte [ebx + 4]
movzx eax, byte [eax*4 + str.ccccwwww]
xor ecx, dword [eax*4 + 0x43b710]
mov dword [ebx + 4], ecx
cmp esi, dword [edi + 0xf0]
jb 0x417db3
mov eax, dword [ebp + 0xc]
test eax, eax
je 0x417f44
movq xmm0, qword [eax]
movq qword [edi + 0xf4], xmm0
movq xmm0, qword [eax + 8]
movq qword [edi + 0xfc], xmm0
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret