Function at 0x4473a0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x10
push ebx
push esi
push edi
push 4
call fcn.009c638d
push 4
mov esi, eax
call fcn.009c638d
mov ebx, dword [0xa05004]
add esp, 8
mov edi, eax
xor edx, edx
mov dword [ebp - 0xc], edi
lea ecx, [ebx*4]
test ecx, ecx
jle 0x4473fe
mov edi, dword [ebp + 8]
mov ecx, dword [ebp + 0xc]
sub edi, ecx
nop dword [eax]
mov al, byte [edi + ecx]
lea ecx, [ecx + 1]
mov byte [ecx - 1], al
inc edx
mov ebx, dword [0xa05004]
lea eax, [ebx*4]
cmp edx, eax
jl 0x4473e0
mov edi, dword [ebp - 0xc]
mov eax, dword [0xa05008]
lea edx, [ebx*4]
inc eax
mov dword [ebp - 8], edx
imul eax, dword [section..data]
shl eax, 2
cmp edx, eax
jge 0x447630
mov ebx, dword [ebp + 0xc]
add ebx, 0xfffffffd
add ebx, edx
mov dword [ebp - 0x10], ebx
nop dword [eax + eax]
mov al, byte [ebx - 1]
mov byte [esi], al
mov byte [ebp - 1], al
mov al, byte [ebx]
mov byte [esi + 1], al
mov byte [ebp - 2], al
mov al, byte [ebx + 1]
mov byte [esi + 2], al
mov byte [ebp - 3], al
mov al, byte [ebx + 2]
mov byte [esi + 3], al
mov ecx, dword [0xa05004]
mov byte [ebp - 4], al
mov eax, edx
cdq
and edx, 3
add eax, edx
sar eax, 2
cdq
idiv ecx
test edx, edx
jne 0x44752e
movzx ecx, byte [ebp - 2]
mov bl, 1
mov eax, ecx
and ecx, 0xf
and eax, 0xfffffff0
movzx eax, byte [eax + ecx + str.cw]
movzx ecx, byte [ebp - 3]
mov byte [esi], al
mov eax, ecx
and eax, 0xfffffff0
and ecx, 0xf
movzx eax, byte [eax + ecx + str.cw]
movzx ecx, byte [ebp - 4]
mov byte [esi + 1], al
mov eax, ecx
and eax, 0xfffffff0
and ecx, 0xf
movzx eax, byte [eax + ecx + str.cw]
movzx ecx, byte [ebp - 1]
mov byte [esi + 2], al
mov eax, ecx
and eax, 0xfffffff0
and ecx, 0xf
movzx eax, byte [eax + ecx + str.cw]
mov byte [esi + 3], al
mov eax, dword [0xa05004]
lea ecx, [eax*4]
mov eax, dword [ebp - 8]
cdq
idiv ecx
lea edi, [eax - 1]
test edi, edi
jle 0x4474fe
mov dl, bl
add dl, dl
mov al, dl
xor al, 0x1b
test bl, bl
movzx ecx, al
movzx eax, dl
cmovns ecx, eax
mov bl, cl
sub edi, 1
jne 0x4474e4
mov edi, dword [ebp - 0xc]
mov byte [edi], bl
mov word [edi + 2], 0
mov byte [edi + 1], 0
xor byte [esi], bl
mov al, byte [esi]
mov ebx, dword [ebp - 0x10]
mov byte [ebp - 1], al
movzx eax, byte [edi + 1]
xor byte [esi + 1], al
movzx eax, byte [edi + 2]
xor byte [esi + 2], al
movzx eax, byte [edi + 3]
xor byte [esi + 3], al
jmp 0x44759d
mov al, byte [ebp - 1]
mov byte [ebp - 1], al
cmp ecx, 6
jle 0x4475a3
mov byte [ebp - 1], al
cmp edx, 4
jne 0x4475a3
movzx ecx, al
mov eax, ecx
and ecx, 0xf
and eax, 0xfffffff0
mov al, byte [eax + ecx + str.cw]
movzx ecx, byte [ebp - 2]
mov byte [ebp - 1], al
mov byte [esi], al
mov eax, ecx
and eax, 0xfffffff0
and ecx, 0xf
movzx eax, byte [eax + ecx + str.cw]
movzx ecx, byte [ebp - 3]
mov byte [esi + 1], al
mov eax, ecx
and eax, 0xfffffff0
and ecx, 0xf
movzx eax, byte [eax + ecx + str.cw]
movzx ecx, byte [ebp - 4]
mov byte [esi + 2], al
mov eax, ecx
and eax, 0xfffffff0
and ecx, 0xf
movzx eax, byte [eax + ecx + str.cw]
mov byte [esi + 3], al
mov ecx, dword [0xa05004]
mov edx, dword [ebp - 8]
lea eax, [ecx*4]
mov ecx, edx
sub ecx, eax
mov eax, dword [ebp + 0xc]
movzx eax, byte [ecx + eax]
mov ecx, edx
xor al, byte [ebp - 1]
mov byte [ebx + 3], al
mov eax, dword [0xa05004]
shl eax, 2
sub ecx, eax
mov eax, dword [ebp + 0xc]
movzx eax, byte [ecx + eax + 1]
mov ecx, edx
xor al, byte [esi + 1]
mov byte [ebx + 4], al
mov eax, dword [0xa05004]
shl eax, 2
sub ecx, eax
mov eax, dword [ebp + 0xc]
movzx eax, byte [ecx + eax + 2]
mov ecx, edx
xor al, byte [esi + 2]
add edx, 4
mov byte [ebx + 5], al
mov eax, dword [0xa05004]
shl eax, 2
sub ecx, eax
mov dword [ebp - 8], edx
mov eax, dword [ebp + 0xc]
movzx eax, byte [ecx + eax + 3]
xor al, byte [esi + 3]
mov byte [ebx + 6], al
add ebx, 4
mov eax, dword [0xa05008]
inc eax
mov dword [ebp - 0x10], ebx
imul eax, dword [section..data]
shl eax, 2
cmp edx, eax
jl 0x447430
push edi
call fcn.009c6372
push esi
call fcn.009c6372
add esp, 8
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret