Function at 0x48fd80
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x30
mov eax, dword [ecx + 0x70]
push ebx
push esi
mov esi, dword [ebp + 0xc]
push edi
mov edi, edx
sar esi, 0x10
mov edx, dword [ecx + 0x80]
imul esi, edx
mov dword [ebp - 0x14], eax
mov eax, dword [ecx + 0x78]
mov dword [ebp - 0x2c], edi
mov dword [ebp - 0x30], edx
lea ebx, [eax + esi*4]
mov esi, dword [ebp + 8]
mov dword [ebp - 0x10], ebx
mov ecx, dword [esi]
mov eax, dword [edi]
xor edx, edx
test eax, eax
cmovns edx, eax
mov eax, ecx
sar eax, 0x10
mov dword [ebp - 0x1c], edx
cmp eax, dword [ebp - 0x14]
jl 0x48fdd1
mov ecx, dword [ebp - 0x14]
shl ecx, 0x10
dec ecx
cmp ecx, edx
jle 0x48ff2e
mov eax, ecx
sar edx, 0x10
sar eax, 0x10
mov dword [ebp - 0x24], eax
mov eax, edx
sar eax, 1
add eax, ebx
movzx ecx, cx
mov dword [ebp - 8], eax
add ecx, 0x199a
mov dword [ebp - 0x20], edx
mov ebx, edx
mov eax, 0xa000a001
and ebx, 1
mul ecx
mov eax, dword [ebp - 8]
shr edx, 0xd
mov dword [ebp - 0x28], edx
mov dword [ebp - 0xc], ebx
mov al, byte [eax]
mov byte [ebp - 1], al
mov al, bl
shl al, 2
mov byte [ebp - 2], al
mov eax, dword [ebp - 0x1c]
movzx ecx, ax
mov eax, 0xa000a001
add ecx, 0x199a
mul ecx
mov al, byte [ebp - 1]
lea ecx, [ebx*4]
mov ebx, dword [ebp - 0x24]
mov ah, 0xf
shl ah, cl
mov dword [ebp - 0x1c], ecx
not ah
mov cl, byte [ebp - 2]
and ah, al
shr al, cl
mov ecx, dword [ebp - 0x1c]
and al, 0xf
shr edx, 0xd
sub al, dl
mov dword [ebp - 0x18], edx
cmp dword [ebp - 0x20], ebx
jne 0x48fe78
add al, byte [ebp - 0x28]
mov dl, al
shr dl, 4
neg dl
or dl, al
and dl, 0xf
shl dl, cl
or dl, ah
jmp 0x48ff29
add al, 5
mov dl, al
shr dl, 4
neg dl
or dl, al
and dl, 0xf
shl dl, cl
mov ecx, dword [ebp - 0x20]
or dl, ah
mov eax, dword [ebp - 8]
inc ecx
mov byte [eax], dl
mov edx, dword [ebp - 0xc]
add eax, edx
xor edx, 1
mov dword [ebp - 8], eax
mov dword [ebp - 0xc], edx
cmp ecx, ebx
jge 0x48fefa
mov edi, dword [ebp - 0x24]
mov esi, eax
sub edi, ecx
nop dword [eax]
mov al, byte [esi]
mov cl, dl
shl cl, 2
shr al, cl
lea ecx, [edx*4]
and al, 0xf
add al, 5
mov dl, al
shr dl, 4
neg dl
or dl, al
mov al, 0xf
and dl, 0xf
shl al, cl
shl dl, cl
not al
and al, byte [esi]
or dl, al
mov byte [esi], dl
mov edx, dword [ebp - 0xc]
add esi, edx
xor edx, 1
mov dword [ebp - 0xc], edx
sub edi, 1
jne 0x48feb0
mov edi, dword [ebp - 0x2c]
mov dword [ebp - 8], esi
mov esi, dword [ebp + 8]
mov eax, dword [ebp - 8]
mov bl, byte [eax]
mov cl, dl
shl cl, 2
mov al, bl
shr al, cl
lea ecx, [edx*4]
and al, 0xf
add al, byte [ebp - 0x28]
mov dl, al
shr dl, 4
neg dl
or dl, al
mov al, 0xf
shl al, cl
and dl, 0xf
not al
shl dl, cl
and al, bl
or dl, al
mov eax, dword [ebp - 8]
mov byte [eax], dl
mov edx, dword [ebp + 0xc]
cmp edx, dword [ebp + 0x10]
je 0x48ffed
mov ecx, dword [edi]
mov ebx, dword [edi + 4]
cmp dx, 0xd555
je 0x48ff95
mov eax, dword [edi + 0x20]
add ecx, dword [edi + 0x18]
add eax, ebx
mov dword [edi], ecx
mov dword [edi + 4], eax
test eax, eax
jle 0x48ff64
sub eax, dword [edi + 0x10]
mov dword [edi + 4], eax
mov eax, dword [edi + 0xc]
add eax, ecx
mov dword [edi], eax
mov eax, dword [esi + 0x20]
mov ecx, dword [esi + 0x18]
add dword [esi + 4], eax
add ecx, dword [esi]
mov eax, dword [esi + 4]
mov dword [esi], ecx
test eax, eax
jle 0x48ff83
sub eax, dword [esi + 0x10]
add ecx, dword [esi + 0xc]
mov dword [esi + 4], eax
mov dword [esi], ecx
mov ebx, dword [ebp - 0x10]
mov eax, 0x5555
add edx, eax
mov dword [ebp + 0xc], edx
jmp 0x48fdb4
mov eax, dword [edi + 0x24]
add ecx, dword [edi + 0x1c]
add eax, ebx
mov dword [edi], ecx
mov dword [edi + 4], eax
test eax, eax
jle 0x48ffb3
sub eax, dword [edi + 0x10]
mov dword [edi + 4], eax
mov eax, dword [edi + 0xc]
add eax, ecx
mov dword [edi], eax
mov eax, dword [esi + 0x24]
mov ecx, dword [esi + 0x1c]
add dword [esi + 4], eax
add ecx, dword [esi]
mov eax, dword [esi + 4]
mov dword [esi], ecx
test eax, eax
jle 0x48ffd2
sub eax, dword [esi + 0x10]
add ecx, dword [esi + 0xc]
mov dword [esi + 4], eax
mov dword [esi], ecx
mov ebx, dword [ebp - 0x10]
mov eax, dword [ebp - 0x30]
lea ebx, [ebx + eax*4]
mov eax, 0x5556
add edx, eax
mov dword [ebp - 0x10], ebx
mov dword [ebp + 0xc], edx
jmp 0x48fdb4
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret