Function at 0x46c5e0
Capabilities:
Encode data using xor

Disassembly:
push ecx
push ebx
mov ebx, dword [esp + 0x14]
mov eax, dword [ebx + 0x16c]
push ebp
mov ebp, dword [esp + 0x14]
push edi
xor edi, edi
test ebp, ebp
je 0x46c85a
test bl, 3
push esi
jne 0x46c6e1
test al, 3
je 0x46c633
lea ebx, [ebx]
cmp edi, ebp
jae 0x46c62b
mov ecx, dword [esp + 0x18]
mov dl, byte [edi + ecx]
mov cl, byte [eax + ebx + 0x30]
xor cl, dl
inc edi
mov byte [eax + ebx + 0x30], cl
inc eax
test al, 3
jne 0x46c610
test al, 3
jne 0x46c815
mov edx, dword [esp + 0x18]
mov ecx, edi
sub ecx, ebx
add ecx, edx
test cl, 3
jne 0x46c819
lea ecx, [edi + 0x10]
cmp ecx, ebp
ja 0x46c66a
lea ecx, [ecx]
cmp eax, 0x10
jae 0x46c66a
mov esi, dword [edx + ecx - 0x10]
xor dword [eax + ebx + 0x30], esi
add ecx, 4
add edi, 4
add eax, 4
cmp ecx, ebp
jbe 0x46c650
lea ecx, [edi + 0x10]
cmp ecx, ebp
ja 0x46c819
mov eax, 8
sub eax, edx
lea esi, [ebx + 0x30]
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 0x46c690
jmp 0x46c80d
cmp ebp, 0x10
jb 0x46c70e
mov esi, 0x10
jmp 0x46c6f0
cmp eax, 0x10
jae 0x46c70e
mov ecx, dword [esp + 0x18]
mov dl, byte [esi + ecx - 0x10]
mov cl, byte [eax + ebx + 0x30]
xor cl, dl
inc edi
inc esi
mov byte [eax + ebx + 0x30], cl
inc eax
cmp esi, ebp
jbe 0x46c6f0
lea ecx, [edi + 0x10]
cmp ecx, ebp
ja 0x46c815
mov eax, dword [esp + 0x18]
mov ecx, 0xf
sub ecx, eax
lea ebp, [ebx + 0x30]
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 + 0x31]
mov dl, byte [ebx + 0x32]
mov byte [ebp], al
mov al, byte [esi]
xor cl, al
mov al, byte [ebx + 0x33]
mov byte [ebx + 0x31], cl
mov cl, byte [esi + 1]
xor dl, cl
mov cl, byte [ebx + 0x34]
mov byte [ebx + 0x32], dl
mov dl, byte [esi + 2]
xor al, dl
mov dl, byte [ebx + 0x35]
mov byte [ebx + 0x33], al
mov al, byte [esi + 3]
xor cl, al
mov al, byte [ebx + 0x36]
mov byte [ebx + 0x34], cl
mov cl, byte [esi + 4]
xor dl, cl
mov cl, byte [ebx + 0x37]
mov byte [ebx + 0x35], dl
mov dl, byte [esi + 5]
xor al, dl
mov dl, byte [ebx + 0x38]
mov byte [ebx + 0x36], al
mov al, byte [esi + 6]
xor cl, al
mov al, byte [ebx + 0x39]
mov byte [ebx + 0x37], cl
mov cl, byte [esi + 7]
xor dl, cl
mov cl, byte [ebx + 0x3a]
mov byte [ebx + 0x38], dl
mov dl, byte [esi + 8]
xor al, dl
mov dl, byte [ebx + 0x3b]
mov byte [ebx + 0x39], al
mov al, byte [esi + 9]
xor cl, al
mov al, byte [ebx + 0x3c]
mov byte [ebx + 0x3a], cl
mov cl, byte [esi + 0xa]
xor dl, cl
mov cl, byte [ebx + 0x3d]
mov byte [ebx + 0x3b], dl
mov dl, byte [esi + 0xb]
xor al, dl
mov dl, byte [ebx + 0x3e]
mov byte [ebx + 0x3c], al
mov al, byte [esi + 0xc]
xor cl, al
mov al, byte [ebx + 0x3f]
mov byte [ebx + 0x3d], cl
mov cl, byte [esi + 0xd]
xor dl, cl
mov byte [ebx + 0x3e], dl
mov dl, byte [esi + 0xe]
xor al, dl
mov byte [ebx + 0x3f], 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 0x46c737
mov eax, dword [esp + 0x20]
mov ebp, dword [esp + 0x1c]
mov edx, dword [esp + 0x18]
cmp edi, ebp
jae 0x46c853
lea esi, [ebx + 0x30]
cmp eax, 0x10
jne 0x46c847
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 0x46c820
mov dword [ebx + 0x16c], eax
pop esi
pop edi
pop ebp
xor eax, eax
pop ebx
pop ecx
ret