Function at 0x47f860
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x18
mov edx, edx
mov eax, ecx
push ebx
push esi
push edi
mov dword [esp - 0x28], ecx
cmp dword [eax + 0x818], 0
mov dword [ebp - 8], eax
jne 0x47fb06
mov dword [ebp - 0x10], 0x2dc62d86
xchg edx, edx
sub dword [ebp - 0x10], 0x106b3cc8
add dword [ebp - 0x10], 0x55e9fc5d
sub dword [ebp - 0x10], 0x3110bd35
xor dword [ebp - 0x10], 0x80e38e2
xchg ebx, ebx
mov eax, dword [ebp - 0x10]
mov dword [ebp - 0xc], 0x7437f2b2
sub dword [ebp - 0xc], 0x1ce64158
mov dword [esp - 0x2c], 0x74b1e50c
sub dword [ebp - 0xc], 0xd5bc03c
xor dword [ebp - 0xc], 0x4a0b7eff
add dword [ebp - 0xc], 0x71266a18
sub dword [ebp - 0xc], 0x5612b98b
mov dword [esp - 0x10], 0x5ef5c0b5
mov ecx, dword [ebp - 0xc]
nop
mov dword [esp - 4], 0x23723751
mov dword [esp - 0x40], esp
add dword [esp - 4], 0xe19b632
sub dword [esp - 4], 0x1d55a9ce
xor dword [esp - 4], 0x20755671
xor dword [esp - 4], 0x253757ed
mov ecx, ecx
add dword [esp - 4], 0x1f987e6
sub dword [esp - 4], 0x136dc9ff
sub esp, 4
mov ebp, ebp
mov dword [ebp - 0x10], eax
mov dword [ebp - 0xc], ecx
mov dword [ebp - 0x14], 0x113ab509
add dword [ebp - 0x14], 0x48feb38f
xchg esp, esp
add dword [ebp - 0x14], 0x1e41223a
sub dword [ebp - 0x14], 0x1a8c49a0
sub dword [ebp - 0x14], 0x2ae66107
mov ecx, ecx
xor dword [ebp - 0x14], 0x495aa5c4
sub dword [ebp - 0x14], 0x7a5d45e7
call fcn.0048b720
mov ecx, ecx
add esp, 4
mov dword [ebp - 0x18], eax
xor edx, edx
mov dword [esp - 0xc], 0x77a72a9b
jmp 0x47f983
movsx cx, byte [ebp + edx - 0x10]
mov word [eax + edx*2], cx
inc edx
mov ebx, ebx
mov edi, dword [ebp - 0x14]
cmp edx, edi
jb 0x47f983
mov ebp, ebp
cmp edi, 2
lea eax, [ebp - 0x18]
pushf
mov edx, 0x479b7807
xchg ebx, ebx
sub edx, 0x25f0d3c1
xor edx, 0x2bb6d415
add edx, 0x199d565b
mov dword [esp - 0x2c], 0x2ad9a14b
add edx, 0x1eff0c10
xor edx, 0x42b8d2bc
popf
cmova eax, dword [ebp - 0x18]
mov ecx, ecx
xor ecx, ecx
mov dword [ebp - 4], eax
lea eax, [edi + 1]
xchg ebp, ebp
mul edx
seto cl
neg ecx
mov dword [esp - 0x34], esi
or ecx, eax
push ecx
call fcn.0048b720
add esp, 4
mov dword [esp - 0x18], 0x12d9b4d
mov esi, eax
xor ebx, ebx
mov dword [ebp - 0xc], esi
mov dword [esp - 0x14], 0x7a47b9c2
test edi, edi
je 0x47fa70
sub dword [ebp - 4], esi
mov dword [esp - 0xc], 0x1b91e823
mov edx, esi
mov esi, dword [ebp - 4]
mov edi, edi
mov dword [esp - 0x24], edx
mov ecx, ebx
lea edx, [edx + 2]
and ecx, 3
mov eax, 0x4ed1538f
xchg ebx, ebx
sub eax, 0x1703b9a
add eax, 0x2e93b123
sub eax, 0x55d229fd
xchg esp, esp
add eax, 0x4d5b8525
shl ecx, 3
inc ebx
mov dword [esp - 0x18], 0x3a24864e
sar eax, cl
cbw
xor ax, word [esi + edx - 2]
xchg esp, esp
mov word [edx - 2], ax
cmp ebx, edi
jb 0x47fa27
mov esi, dword [ebp - 0xc]
xchg edx, edx
xor eax, eax
push eax
push esi
mov dword [esp - 0x20], 0x64019573
mov word [esi + edi*2], ax
call fcn.00473790
mov ecx, dword [ebp - 8]
xchg edi, edi
push esi
mov dword [ecx + 0x818], eax
call fcn.0048b6f0
xchg esp, esp
add esp, 0xc
cmp edi, 2
jbe 0x47faad
push dword [ebp - 0x18]
xchg edx, edx
call fcn.0048b6f0
add esp, 4
mov eax, dword [ebp - 8]
mov ebx, dword [eax + 0x818]
mov dword [esp - 0x34], edi
test ebx, ebx
je 0x47fb29
xor edi, edi
lea esi, [eax + 0x5a8]
mov ecx, ecx
lea esp, [esp]
mov eax, dword [esi + 4]
xor eax, 0x6fa836ea
mov dword [esp - 0xc], ebp
push eax
push ebx
call fcn.00471c00
add esp, 8
mov dword [esp - 0xc], edx
test eax, eax
je 0x47fb29
xor eax, dword [0x4ba958]
mov dword [esp - 0x3c], ebx
inc edi
mov dword [esi], eax
add esi, 8
mov dword [esp - 0x10], esp
cmp edi, 1
jb 0x47facf
pop edi
pop esi
xchg ebp, ebp
mov al, 0x26
add al, 0x57
sub al, 0x27
sub al, 0x48
mov dword [esp - 0x10], 0x2baf1122
sub al, 0xd
pop ebx
mov esp, ebp
pop ebp
mov dword [esp - 0x44], 0x1bce923
ret
pop edi
pop esi
xor al, al
pop ebx
xchg esi, esi
mov esp, ebp
pop ebp
ret