Function at 0x46cca0
Capabilities:
Encode data using xor

Disassembly:
push ecx
push ebx
mov ebx, dword [esp + 0x14]
mov eax, dword [ebx + 0x164]
push ebp
mov ebp, dword [esp + 0x14]
push edi
xor edi, edi
test ebp, ebp
je 0x46cf1a
test bl, 3
push esi
jne 0x46cda1
test al, 3
je 0x46ccf3
lea ebx, [ebx]
cmp edi, ebp
jae 0x46cceb
mov ecx, dword [esp + 0x18]
mov dl, byte [edi + ecx]
mov cl, byte [eax + ebx + 0x20]
xor cl, dl
inc edi
mov byte [eax + ebx + 0x20], cl
inc eax
test al, 3
jne 0x46ccd0
test al, 3
jne 0x46ced5
mov edx, dword [esp + 0x18]
mov ecx, edi
sub ecx, ebx
add ecx, edx
test cl, 3
jne 0x46ced9
lea ecx, [edi + 0x10]
cmp ecx, ebp
ja 0x46cd2a
lea ecx, [ecx]
cmp eax, 0x10
jae 0x46cd2a
mov esi, dword [edx + ecx - 0x10]
xor dword [eax + ebx + 0x20], esi
add ecx, 4
add edi, 4
add eax, 4
cmp ecx, ebp
jbe 0x46cd10
lea ecx, [edi + 0x10]
cmp ecx, ebp
ja 0x46ced9
mov eax, 8
sub eax, edx
lea esi, [ebx + 0x20]
mov dword [esp + 0x20], 0x10
lea ebp, [edi + edx + 8]
mov dword [esp + 0x10], eax
nop
lea eax, [ebx + 0x70]
push eax
push esi
push esi
call fcn.0046cf21
mov edx, dword [ebp - 8]
mov eax, dword [esi]
mov ecx, dword [esi + 4]
xor eax, edx
mov edx, dword [esi + 8]
mov dword [esi], eax
mov eax, dword [ebp - 4]
xor ecx, eax
mov eax, dword [esp + 0x1c]
mov dword [esi + 4], ecx
mov ecx, dword [ebp]
xor edx, ecx
mov ecx, dword [esi + 0xc]
mov dword [esi + 8], edx
mov edx, dword [ebp + 4]
xor ecx, edx
add ebp, 0x10
mov dword [esi + 0xc], ecx
mov ecx, dword [esp + 0x28]
add eax, ebp
add esp, 0xc
add edi, 0x10
cmp eax, ecx
jbe 0x46cd50
jmp 0x46cecd
cmp ebp, 0x10
jb 0x46cdce
mov esi, 0x10
jmp 0x46cdb0
cmp eax, 0x10
jae 0x46cdce
mov ecx, dword [esp + 0x18]
mov dl, byte [esi + ecx - 0x10]
mov cl, byte [eax + ebx + 0x20]
xor cl, dl
inc edi
inc esi
mov byte [eax + ebx + 0x20], cl
inc eax
cmp esi, ebp
jbe 0x46cdb0
lea ecx, [edi + 0x10]
cmp ecx, ebp
ja 0x46ced5
mov eax, dword [esp + 0x18]
mov ecx, 0xf
sub ecx, eax
lea ebp, [ebx + 0x20]
mov dword [esp + 0x20], 0x10
lea esi, [edi + eax + 1]
mov dword [esp + 0x10], ecx
lea eax, [ebx + 0x70]
push eax
push ebp
push ebp
call fcn.0046cf21
mov dl, byte [esi - 1]
mov al, byte [ebp]
xor al, dl
mov cl, byte [ebx + 0x21]
mov dl, byte [ebx + 0x22]
mov byte [ebp], al
mov al, byte [esi]
xor cl, al
mov al, byte [ebx + 0x23]
mov byte [ebx + 0x21], cl
mov cl, byte [esi + 1]
xor dl, cl
mov cl, byte [ebx + 0x24]
mov byte [ebx + 0x22], dl
mov dl, byte [esi + 2]
xor al, dl
mov dl, byte [ebx + 0x25]
mov byte [ebx + 0x23], al
mov al, byte [esi + 3]
xor cl, al
mov al, byte [ebx + 0x26]
mov byte [ebx + 0x24], cl
mov cl, byte [esi + 4]
xor dl, cl
mov cl, byte [ebx + 0x27]
mov byte [ebx + 0x25], dl
mov dl, byte [esi + 5]
xor al, dl
mov dl, byte [ebx + 0x28]
mov byte [ebx + 0x26], al
mov al, byte [esi + 6]
xor cl, al
mov al, byte [ebx + 0x29]
mov byte [ebx + 0x27], cl
mov cl, byte [esi + 7]
xor dl, cl
mov cl, byte [ebx + 0x2a]
mov byte [ebx + 0x28], dl
mov dl, byte [esi + 8]
xor al, dl
mov dl, byte [ebx + 0x2b]
mov byte [ebx + 0x29], al
mov al, byte [esi + 9]
xor cl, al
mov al, byte [ebx + 0x2c]
mov byte [ebx + 0x2a], cl
mov cl, byte [esi + 0xa]
xor dl, cl
mov cl, byte [ebx + 0x2d]
mov byte [ebx + 0x2b], dl
mov dl, byte [esi + 0xb]
xor al, dl
mov dl, byte [ebx + 0x2e]
mov byte [ebx + 0x2c], al
mov al, byte [esi + 0xc]
xor cl, al
mov al, byte [ebx + 0x2f]
mov byte [ebx + 0x2d], cl
mov cl, byte [esi + 0xd]
xor dl, cl
mov byte [ebx + 0x2e], dl
mov dl, byte [esi + 0xe]
xor al, dl
mov byte [ebx + 0x2f], al
mov eax, dword [esp + 0x1c]
add esi, 0x10
lea ecx, [esi + eax]
mov eax, dword [esp + 0x28]
add esp, 0xc
add edi, 0x10
cmp ecx, eax
jbe 0x46cdf7
mov eax, dword [esp + 0x20]
mov ebp, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
cmp edi, ebp
jae 0x46cf13
lea esi, [ebx + 0x20]
cmp eax, 0x10
jne 0x46cf07
lea edx, [ebx + 0x70]
push edx
push esi
push esi
call fcn.0046cf21
mov edx, dword [esp + 0x24]
mov ebp, dword [esp + 0x28]
mov dword [esp + 0x2c], 0
mov eax, dword [esp + 0x2c]
add esp, 0xc
mov cl, byte [edi + edx]
xor byte [esi + eax], cl
inc edi
inc eax
cmp edi, ebp
jb 0x46cee0
mov dword [ebx + 0x164], eax
pop esi
pop edi
pop ebp
xor eax, eax
pop ebx
pop ecx
ret