Function at 0x45fc36
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
pop ebp
sub esp, 0x10
push ebx
push ebp
push esi
push edi
xor edi, edi
mov esi, 0x800
mov edi, edi
mov eax, dword [ecx]
mov bl, byte [eax + edi]
lea ebp, [eax + edi]
mov al, bl
and al, 2
neg al
sbb al, al
and al, 0xb4
mov dl, bl
and dl, 1
mov byte [esp + 0x13], dl
neg dl
sbb dl, dl
and dl, 0x5a
mov byte [esp + 0x11], dl
mov dl, bl
shr dl, 2
xor dl, byte [esp + 0x11]
mov byte [esp + 0x14], bl
xor dl, al
xor dl, bl
mov byte [esp + 0x18], dl
mov dl, bl
shr dl, 1
xor dl, bl
mov bl, byte [esp + 0x13]
shr dl, 1
neg bl
sbb bl, bl
and bl, 0xb4
xor dl, bl
mov bl, byte [ebp + 0x100]
xor dl, byte [esp + 0x11]
mov byte [esp + 0x15], bl
xor dl, al
xor dl, byte [esp + 0x14]
mov al, bl
and al, 2
neg al
sbb al, al
and al, 0xb4
mov byte [esp + 0x12], al
mov al, bl
and al, 1
mov byte [esp + 0x13], al
neg al
sbb al, al
and al, 0x5a
mov byte [esp + 0x11], al
mov al, bl
shr al, 2
xor al, byte [esp + 0x11]
xor al, byte [esp + 0x12]
xor al, bl
mov byte [esp + 0x19], al
mov al, bl
shr al, 1
xor al, bl
mov bl, byte [esp + 0x13]
shr al, 1
neg bl
sbb bl, bl
and bl, 0xb4
xor al, bl
xor al, byte [esp + 0x11]
mov bl, byte [esp + 0x15]
xor al, byte [esp + 0x12]
mov byte [esp + 0x1c], bl
xor al, bl
movzx ebx, byte [esp + 0x19]
mov byte [esp + 0x1d], bl
mov ebx, dword [ecx + 4]
mov byte [esp + 0x1e], al
mov byte [esp + 0x1f], al
mov ebp, dword [esp + 0x1c]
mov dword [esi + ebx - 0x800], ebp
movzx ebx, byte [esp + 0x18]
mov byte [esp + 0x1e], bl
movzx ebx, byte [esp + 0x14]
mov byte [esp + 0x1c], dl
mov byte [esp + 0x1d], dl
mov byte [esp + 0x1f], bl
mov ebp, dword [esp + 0x1c]
mov ebx, dword [ecx + 4]
mov dword [ebx + esi - 0x400], ebp
movzx ebx, byte [esp + 0x19]
mov byte [esp + 0x1d], al
mov byte [esp + 0x1f], al
mov eax, dword [ecx + 4]
mov byte [esp + 0x1c], bl
movzx ebx, byte [esp + 0x15]
mov byte [esp + 0x1e], bl
mov ebx, dword [esp + 0x1c]
mov dword [esi + eax], ebx
movzx ebx, byte [esp + 0x14]
mov al, byte [esp + 0x18]
mov byte [esp + 0x1e], dl
mov edx, dword [ecx + 4]
mov byte [esp + 0x1c], al
mov byte [esp + 0x1f], al
mov byte [esp + 0x1d], bl
mov eax, dword [esp + 0x1c]
mov dword [edx + esi + 0x400], eax
mov edx, dword [ecx]
mov al, byte [edx + edi + 1]
lea ebp, [edx + edi]
mov dl, al
and dl, 2
neg dl
sbb dl, dl
and dl, 0xb4
mov byte [esp + 0x12], dl
mov dl, al
and dl, 1
mov byte [esp + 0x13], dl
neg dl
sbb dl, dl
and dl, 0x5a
mov bl, byte [esp + 0x13]
mov byte [esp + 0x11], dl
mov dl, al
shr dl, 2
xor dl, byte [esp + 0x11]
mov byte [esp + 0x14], al
xor dl, byte [esp + 0x12]
xor dl, al
mov byte [esp + 0x18], dl
mov dl, al
shr dl, 1
xor dl, al
shr dl, 1
neg bl
sbb bl, bl
and bl, 0xb4
xor dl, bl
xor dl, byte [esp + 0x11]
mov bl, byte [ebp + 0x101]
xor dl, byte [esp + 0x12]
mov byte [esp + 0x15], bl
xor dl, al
mov al, bl
and al, 2
neg al
sbb al, al
and al, 0xb4
mov byte [esp + 0x12], al
mov al, bl
and al, 1
mov byte [esp + 0x13], al
neg al
sbb al, al
and al, 0x5a
mov byte [esp + 0x11], al
mov al, bl
shr al, 2
xor al, byte [esp + 0x11]
xor al, byte [esp + 0x12]
xor al, bl
mov byte [esp + 0x19], al
mov al, bl
shr al, 1
xor al, bl
mov bl, byte [esp + 0x13]
shr al, 1
neg bl
sbb bl, bl
and bl, 0xb4
xor al, bl
xor al, byte [esp + 0x11]
mov bl, byte [esp + 0x15]
xor al, byte [esp + 0x12]
mov byte [esp + 0x1c], bl
xor al, bl
movzx ebx, byte [esp + 0x19]
mov byte [esp + 0x1d], bl
mov ebx, dword [ecx + 4]
mov byte [esp + 0x1e], al
mov byte [esp + 0x1f], al
mov ebp, dword [esp + 0x1c]
mov dword [ebx + esi - 0x7fc], ebp
movzx ebx, byte [esp + 0x18]
mov byte [esp + 0x1c], dl
mov byte [esp + 0x1d], dl
mov byte [esp + 0x1e], bl
movzx ebx, byte [esp + 0x14]
mov byte [esp + 0x1f], bl
mov ebp, dword [esp + 0x1c]
mov ebx, dword [ecx + 4]
mov dword [ebx + esi - 0x3fc], ebp
movzx ebx, byte [esp + 0x19]
mov byte [esp + 0x1c], bl
movzx ebx, byte [esp + 0x15]
mov byte [esp + 0x1e], bl
mov byte [esp + 0x1d], al
mov byte [esp + 0x1f], al
mov ebx, dword [esp + 0x1c]
mov eax, dword [ecx + 4]
mov byte [esp + 0x1e], dl
mov dword [eax + esi + 4], ebx
movzx ebx, byte [esp + 0x14]
mov al, byte [esp + 0x18]
mov edx, dword [ecx + 4]
mov byte [esp + 0x1d], bl
mov byte [esp + 0x1c], al
mov byte [esp + 0x1f], al
mov eax, dword [esp + 0x1c]
mov dword [edx + esi + 0x404], eax
mov edx, dword [ecx]
mov al, byte [edx + edi + 2]
lea ebp, [edx + edi]
mov dl, al
and dl, 2
neg dl
sbb dl, dl
and dl, 0xb4
mov byte [esp + 0x12], dl
mov dl, al
and dl, 1
mov byte [esp + 0x13], dl
neg dl
sbb dl, dl
and dl, 0x5a
mov bl, byte [esp + 0x13]
mov byte [esp + 0x11], dl
mov dl, al
shr dl, 2
xor dl, byte [esp + 0x11]
mov byte [esp + 0x14], al
xor dl, byte [esp + 0x12]
xor dl, al
mov byte [esp + 0x18], dl
mov dl, al
shr dl, 1
xor dl, al
shr dl, 1
neg bl
sbb bl, bl
and bl, 0xb4
xor dl, bl
xor dl, byte [esp + 0x11]
mov bl, byte [ebp + 0x102]
xor dl, byte [esp + 0x12]
xor dl, al
mov al, bl
and al, 2
neg al
sbb al, al
and al, 0xb4
mov byte [esp + 0x12], al
mov al, bl
and al, 1
mov byte [esp + 0x13], al
neg al
sbb al, al
and al, 0x5a
mov byte [esp + 0x11], al
mov al, bl
shr al, 2
xor al, byte [esp + 0x11]
mov byte [esp + 0x15], bl
xor al, byte [esp + 0x12]
xor al, bl
mov byte [esp + 0x19], al
mov al, bl
shr al, 1
xor al, bl
mov bl, byte [esp + 0x13]
shr al, 1
neg bl
sbb bl, bl
and bl, 0xb4
xor al, bl
xor al, byte [esp + 0x11]
mov bl, byte [esp + 0x15]
xor al, byte [esp + 0x12]
mov byte [esp + 0x1c], bl
xor al, bl
movzx ebx, byte [esp + 0x19]
mov byte [esp + 0x1d], bl
mov ebx, dword [ecx + 4]
mov byte [esp + 0x1e], al
mov byte [esp + 0x1f], al
mov ebp, dword [esp + 0x1c]
mov dword [ebx + esi - 0x7f8], ebp
movzx ebx, byte [esp + 0x18]
mov byte [esp + 0x1e], bl
movzx ebx, byte [esp + 0x14]
mov byte [esp + 0x1c], dl
mov byte [esp + 0x1d], dl
mov byte [esp + 0x1f], bl
mov ebp, dword [esp + 0x1c]
mov ebx, dword [ecx + 4]
mov dword [ebx + esi - 0x3f8], ebp
movzx ebx, byte [esp + 0x19]
mov byte [esp + 0x1c], bl
movzx ebx, byte [esp + 0x15]
mov byte [esp + 0x1d], al
mov byte [esp + 0x1f], al
mov eax, dword [ecx + 4]
mov byte [esp + 0x1e], bl
mov ebx, dword [esp + 0x1c]
mov dword [eax + esi + 8], ebx
movzx ebx, byte [esp + 0x14]
mov al, byte [esp + 0x18]
mov byte [esp + 0x1e], dl
mov edx, dword [ecx + 4]
mov byte [esp + 0x1c], al
mov byte [esp + 0x1f], al
mov byte [esp + 0x1d], bl
mov eax, dword [esp + 0x1c]
mov dword [edx + esi + 0x408], eax
mov edx, dword [ecx]
mov al, byte [edx + edi + 3]
lea ebp, [edx + edi]
mov dl, al
and dl, 2
neg dl
sbb dl, dl
and dl, 0xb4
mov byte [esp + 0x12], dl
mov dl, al
and dl, 1
mov byte [esp + 0x14], al
mov byte [esp + 0x13], dl
neg dl
sbb dl, dl
and dl, 0x5a
mov bl, byte [esp + 0x13]
mov byte [esp + 0x11], dl
mov dl, al
shr dl, 2
xor dl, byte [esp + 0x11]
xor dl, byte [esp + 0x12]
xor dl, al
mov byte [esp + 0x18], dl
mov dl, al
shr dl, 1
xor dl, al
shr dl, 1
neg bl
sbb bl, bl
and bl, 0xb4
xor dl, bl
mov bl, byte [ebp + 0x103]
xor dl, byte [esp + 0x11]
mov byte [esp + 0x15], bl
xor dl, byte [esp + 0x12]
xor dl, al
mov al, bl
and al, 2
neg al
sbb al, al
and al, 0xb4
mov byte [esp + 0x12], al
mov al, bl
and al, 1
mov byte [esp + 0x13], al
neg al
sbb al, al
and al, 0x5a
mov byte [esp + 0x11], al
mov al, bl
shr al, 2
xor al, byte [esp + 0x11]
xor al, byte [esp + 0x12]
xor al, bl
mov byte [esp + 0x19], al
mov al, bl
shr al, 1
xor al, bl
mov bl, byte [esp + 0x13]
shr al, 1
neg bl
sbb bl, bl
and bl, 0xb4
xor al, bl
xor al, byte [esp + 0x11]
mov bl, byte [esp + 0x15]
xor al, byte [esp + 0x12]
mov byte [esp + 0x1c], bl
xor al, bl
movzx ebx, byte [esp + 0x19]
mov byte [esp + 0x1d], bl
mov ebx, dword [ecx + 4]
mov byte [esp + 0x1e], al
mov byte [esp + 0x1f], al
mov ebp, dword [esp + 0x1c]
mov dword [ebx + esi - 0x7f4], ebp
movzx ebx, byte [esp + 0x18]
mov byte [esp + 0x1e], bl
movzx ebx, byte [esp + 0x14]
mov byte [esp + 0x1f], bl
mov ebx, dword [ecx + 4]
mov byte [esp + 0x1c], dl
mov byte [esp + 0x1d], dl
mov ebp, dword [esp + 0x1c]
mov dword [ebx + esi - 0x3f4], ebp
movzx ebx, byte [esp + 0x19]
mov byte [esp + 0x1c], bl
movzx ebx, byte [esp + 0x15]
mov byte [esp + 0x1d], al
mov byte [esp + 0x1f], al
mov eax, dword [ecx + 4]
mov byte [esp + 0x1e], bl
mov ebx, dword [esp + 0x1c]
mov dword [eax + esi + 0xc], ebx
mov al, byte [esp + 0x18]
movzx ebx, byte [esp + 0x14]
mov byte [esp + 0x1e], dl
mov edx, dword [ecx + 4]
mov byte [esp + 0x1c], al
mov byte [esp + 0x1d], bl
mov byte [esp + 0x1f], al
mov eax, dword [esp + 0x1c]
mov dword [edx + esi + 0x40c], eax
add esi, 0x10
add edi, 4
cmp esi, 0xc00
jl 0x45fc4a
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x10
ret