Function at 0x423990
Capabilities:
Encode data using xor
Encrypt data using aes

Disassembly:
sub esp, 0x14
mov eax, dword [esp + 0x18]
xor ecx, ecx
xor edx, edx
push ebx
mov cl, byte [eax]
mov dl, byte [eax + 1]
shl ecx, 8
add ecx, edx
xor edx, edx
mov dl, byte [eax + 2]
push ebp
mov ebp, dword [esp + 0x28]
push esi
shl ecx, 8
add ecx, edx
xor edx, edx
mov dl, byte [eax + 3]
xor ebx, ebx
shl ecx, 8
add ecx, edx
mov edx, dword [ebp]
xor ecx, edx
xor edx, edx
mov dl, byte [eax + 5]
mov dword [esp + 0x10], ecx
xor ecx, ecx
mov bl, byte [eax + 0xd]
mov cl, byte [eax + 4]
push edi
mov esi, ecx
xor ecx, ecx
mov cl, byte [eax + 6]
mov edi, dword [ebp + 0xc]
shl esi, 8
add esi, edx
xor edx, edx
mov dl, byte [eax + 7]
shl esi, 8
add esi, ecx
mov ecx, dword [ebp + 4]
shl esi, 8
add esi, edx
xor edx, edx
mov dl, byte [eax + 9]
xor esi, ecx
xor ecx, ecx
mov dword [esp + 0x10], esi
mov cl, byte [eax + 8]
shl ecx, 8
add ecx, edx
xor edx, edx
mov dl, byte [eax + 0xa]
shl ecx, 8
add ecx, edx
xor edx, edx
mov dl, byte [eax + 0xb]
shl ecx, 8
add ecx, edx
mov edx, dword [ebp + 8]
xor ecx, edx
xor edx, edx
mov dl, byte [eax + 0xc]
mov dword [esp + 0x1c], ecx
shl edx, 8
add edx, ebx
xor ebx, ebx
mov bl, byte [eax + 0xe]
shl edx, 8
add edx, ebx
xor ebx, ebx
mov bl, byte [eax + 0xf]
xor eax, eax
shl edx, 8
add edx, ebx
mov al, ch
xor edx, edi
xor ebx, ebx
mov bl, byte [esp + 0x12]
mov edi, dword [eax*4 + 0x489fa4]
mov dword [esp + 0x18], edx
mov eax, dword [ebx*4 + 0x489ba4]
xor edi, eax
mov eax, dword [esp + 0x14]
mov ebx, eax
shr ebx, 0x18
shr esi, 0x18
xor edi, dword [ebx*4 + 0x4897a4]
mov ebx, edx
and ebx, 0xff
xor edi, dword [ebx*4 + 0x48a3a4]
mov ebx, dword [ebp + 0x10]
xor edi, ebx
xor ebx, ebx
mov bl, dh
xor edx, edx
mov dl, byte [esp + 0x1e]
mov dword [esp + 0x28], edi
mov ebp, dword [ebx*4 + 0x489fa4]
mov ebx, dword [esi*4 + 0x4897a4]
mov edi, dword [edx*4 + 0x489ba4]
mov edx, eax
and edx, 0xff
xor ebp, edi
xor ebp, ebx
xor ebx, ebx
mov esi, dword [edx*4 + 0x48a3a4]
mov bl, ah
xor ebp, esi
mov esi, dword [esp + 0x30]
mov eax, dword [ebx*4 + 0x489fa4]
mov edx, dword [esi + 0x14]
xor ebp, edx
xor edx, edx
mov dl, byte [esp + 0x1a]
mov dword [esp + 0x30], ebp
mov edx, dword [edx*4 + 0x489ba4]
xor edx, eax
mov eax, ecx
shr eax, 0x18
and ecx, 0xff
mov edi, dword [eax*4 + 0x4897a4]
mov eax, dword [esp + 0x10]
xor edx, edi
mov edi, eax
and edi, 0xff
mov ebx, dword [edi*4 + 0x48a3a4]
xor edx, ebx
mov ebx, dword [esi + 0x18]
xor edx, ebx
xor ebx, ebx
mov bl, ah
mov dword [esp + 0x1c], edx
mov eax, dword [ebx*4 + 0x489fa4]
xor ebx, ebx
mov bl, byte [esp + 0x16]
mov edi, dword [ebx*4 + 0x489ba4]
xor eax, edi
mov edi, dword [esp + 0x18]
shr edi, 0x18
mov ebx, dword [edi*4 + 0x4897a4]
mov edi, dword [ecx*4 + 0x48a3a4]
mov ecx, dword [esi + 0x1c]
xor eax, ebx
xor eax, edi
lea edi, [esi + 0x20]
mov esi, dword [esi + 0xf0]
xor eax, ecx
sar esi, 1
dec esi
mov dword [esp + 0x18], eax
je 0x423da5
mov dword [esp + 0x20], esi
xor ecx, ecx
xor ebx, ebx
mov bl, byte [esp + 0x32]
mov cl, dh
mov esi, dword [ecx*4 + 0x489fa4]
mov ecx, dword [ebx*4 + 0x489ba4]
xor esi, ecx
mov ecx, dword [esp + 0x28]
mov ebx, ecx
shr ebx, 0x18
mov ebp, dword [ebx*4 + 0x4897a4]
mov ebx, eax
and ebx, 0xff
xor esi, ebp
mov ebp, dword [ebx*4 + 0x48a3a4]
mov ebx, dword [edi]
xor esi, ebp
xor esi, ebx
xor ebx, ebx
mov bl, ah
xor eax, eax
mov al, byte [esp + 0x1e]
mov dword [esp + 0x14], esi
mov esi, dword [ebx*4 + 0x489fa4]
mov ebx, dword [edi + 4]
mov ebp, dword [eax*4 + 0x489ba4]
mov eax, dword [esp + 0x30]
shr eax, 0x18
xor esi, ebp
mov ebp, dword [eax*4 + 0x4897a4]
mov eax, ecx
and eax, 0xff
xor esi, ebp
mov ebp, dword [eax*4 + 0x48a3a4]
xor eax, eax
mov al, byte [esp + 0x1a]
xor esi, ebp
xor esi, ebx
xor ebx, ebx
mov eax, dword [eax*4 + 0x489ba4]
mov bl, ch
mov dword [esp + 0x10], esi
mov ecx, dword [ebx*4 + 0x489fa4]
xor eax, ecx
mov ecx, edx
shr ecx, 0x18
and edx, 0xff
mov ebx, dword [ecx*4 + 0x4897a4]
mov ecx, dword [esp + 0x30]
xor eax, ebx
mov ebx, ecx
and ebx, 0xff
mov ebp, dword [ebx*4 + 0x48a3a4]
mov ebx, dword [edi + 8]
xor eax, ebp
xor eax, ebx
xor ebx, ebx
mov bl, ch
mov dword [esp + 0x1c], eax
mov ecx, dword [ebx*4 + 0x489fa4]
xor ebx, ebx
mov bl, byte [esp + 0x2a]
mov ebp, dword [ebx*4 + 0x489ba4]
mov ebx, dword [esp + 0x18]
shr ebx, 0x18
xor ecx, ebp
mov ebp, dword [ebx*4 + 0x4897a4]
mov ebx, dword [edi + 0xc]
xor ecx, ebp
mov ebp, dword [edx*4 + 0x48a3a4]
xor ecx, ebp
xor edx, edx
xor ecx, ebx
xor ebx, ebx
mov bl, byte [esp + 0x12]
mov dl, ah
mov dword [esp + 0x18], ecx
mov ebp, dword [edx*4 + 0x489fa4]
mov edx, dword [ebx*4 + 0x489ba4]
xor ebp, edx
mov edx, dword [esp + 0x14]
mov ebx, edx
add edi, 0x20
shr ebx, 0x18
shr esi, 0x18
xor ebp, dword [ebx*4 + 0x4897a4]
mov ebx, ecx
and ebx, 0xff
xor ebp, dword [ebx*4 + 0x48a3a4]
mov ebx, dword [edi - 0x10]
xor ebp, ebx
xor ebx, ebx
mov bl, ch
xor ecx, ecx
mov cl, byte [esp + 0x1e]
mov dword [esp + 0x28], ebp
mov ebx, dword [ebx*4 + 0x489fa4]
mov ebp, dword [ecx*4 + 0x489ba4]
mov ecx, dword [esi*4 + 0x4897a4]
xor ebx, ebp
xor ebx, ecx
mov ecx, edx
and ecx, 0xff
mov esi, dword [ecx*4 + 0x48a3a4]
mov ecx, dword [edi - 0xc]
xor ebx, esi
xor ebx, ecx
xor ecx, ecx
mov cl, byte [esp + 0x1a]
mov dword [esp + 0x30], ebx
xor ebx, ebx
mov bl, dh
mov edx, dword [ecx*4 + 0x489ba4]
mov ecx, eax
and eax, 0xff
mov ebp, dword [ebx*4 + 0x489fa4]
shr ecx, 0x18
xor edx, ebp
mov ebp, dword [edi - 8]
mov esi, dword [ecx*4 + 0x4897a4]
mov ecx, dword [esp + 0x10]
xor edx, esi
mov esi, ecx
and esi, 0xff
mov ebx, dword [esi*4 + 0x48a3a4]
xor edx, ebx
xor ebx, ebx
mov bl, ch
xor ecx, ecx
mov cl, byte [esp + 0x16]
xor edx, ebp
mov esi, dword [ebx*4 + 0x489fa4]
mov ebp, dword [eax*4 + 0x48a3a4]
mov ebx, dword [ecx*4 + 0x489ba4]
mov ecx, dword [esp + 0x18]
shr ecx, 0x18
xor esi, ebx
mov dword [esp + 0x1c], edx
mov ebx, dword [ecx*4 + 0x4897a4]
mov ecx, dword [esp + 0x20]
xor esi, ebx
mov ebx, dword [edi - 4]
xor esi, ebp
xor esi, ebx
dec ecx
mov eax, esi
mov dword [esp + 0x20], ecx
mov dword [esp + 0x18], eax
jne 0x423b74
mov ebp, dword [esp + 0x30]
xor ebx, ebx
xor ecx, ecx
mov cl, byte [esp + 0x32]
mov bl, dh
shr ebp, 0x18
mov esi, dword [ebx*4 + str.ccccwwww]
mov ecx, dword [ecx*4 + str.ccccwwww]
and ecx, 0xff0000
and esi, 0xff00
xor ecx, esi
mov esi, dword [esp + 0x28]
shr esi, 0x18
mov ebx, dword [edi]
mov esi, dword [esi*4 + str.ccccwwww]
and esi, 0xff000000
xor ecx, esi
mov esi, eax
and esi, 0xff
mov esi, dword [esi*4 + str.ccccwwww]
and esi, 0xff
xor ecx, esi
mov esi, dword [esp + 0x2c]
xor ecx, ebx
mov ebx, ecx
mov byte [esi + 3], cl
shr ebx, 0x18
mov byte [esi], bl
mov ebx, ecx
shr ebx, 0x10
mov byte [esi + 1], bl
mov ebx, ecx
shr ebx, 8
mov byte [esi + 2], bl
xor ecx, ecx
mov cl, byte [esp + 0x1e]
xor ebx, ebx
mov bl, ah
mov ecx, dword [ecx*4 + str.ccccwwww]
mov ebx, dword [ebx*4 + str.ccccwwww]
and ecx, 0xff0000
and ebx, 0xff00
xor ecx, ebx
mov ebx, dword [ebp*4 + str.ccccwwww]
and ebx, 0xff000000
xor ecx, ebx
mov ebx, dword [esp + 0x28]
and ebx, 0xff
mov ebx, dword [ebx*4 + str.ccccwwww]
and ebx, 0xff
xor ecx, ebx
mov ebx, dword [edi + 4]
xor ecx, ebx
mov ebx, ecx
mov byte [esi + 7], cl
shr ebx, 0x18
mov byte [esi + 4], bl
mov ebx, ecx
shr ebx, 0x10
mov byte [esi + 5], bl
mov ebx, ecx
xor ecx, ecx
mov cl, byte [esp + 0x1a]
shr ebx, 8
mov byte [esi + 6], bl
mov ecx, dword [ecx*4 + str.ccccwwww]
and ecx, 0xff0000
mov dword [esp + 0x2c], ecx
xor ecx, ecx
mov cl, byte [esp + 0x29]
mov ebx, dword [ecx*4 + str.ccccwwww]
mov ecx, dword [esp + 0x2c]
and ebx, 0xff00
xor ecx, ebx
mov ebx, edx
shr ebx, 0x18
mov ebx, dword [ebx*4 + str.ccccwwww]
and ebx, 0xff000000
xor ecx, ebx
mov ebx, dword [esp + 0x30]
and ebx, 0xff
mov ebx, dword [ebx*4 + str.ccccwwww]
and ebx, 0xff
and edx, 0xff
xor ecx, ebx
mov ebx, dword [edi + 8]
xor ecx, ebx
mov ebx, ecx
mov byte [esi + 0xb], cl
shr ebx, 0x18
mov byte [esi + 8], bl
mov ebx, ecx
shr ebx, 0x10
mov byte [esi + 9], bl
mov ebx, ecx
xor ecx, ecx
mov cl, byte [esp + 0x2a]
shr ebx, 8
mov byte [esi + 0xa], bl
mov ecx, dword [ecx*4 + str.ccccwwww]
and ecx, 0xff0000
mov edx, dword [edx*4 + str.ccccwwww]
mov dword [esp + 0x28], ecx
xor ecx, ecx
mov cl, byte [esp + 0x31]
mov ebp, dword [edi + 0xc]
shr eax, 0x18
mov ebx, dword [ecx*4 + str.ccccwwww]
mov ecx, dword [esp + 0x28]
mov eax, dword [eax*4 + str.ccccwwww]
and ebx, 0xff00
xor ecx, ebx
and eax, 0xff000000
xor ecx, eax
and edx, 0xff
xor ecx, edx
pop edi
xor ecx, ebp
mov eax, ecx
mov edx, ecx
shr eax, 0x18
mov byte [esi + 0xc], al
mov eax, ecx
shr edx, 0x10
shr eax, 8
mov byte [esi + 0xd], dl
mov byte [esi + 0xe], al
mov byte [esi + 0xf], cl
pop esi
pop ebp
pop ebx
add esp, 0x14
ret