Function at 0x48fe24
Capabilities:
Encode data using xor

Disassembly:
push ebx
push esi
push edi
push ecx
mov edi, eax
mov byte [esp + 1], 0
mov si, 2
jmp 0x490084
movzx eax, word [edi + 0x203c]
add eax, 3
mov edx, dword [edi + 0x2048]
movzx eax, byte [edx + eax - 1]
mov dx, word [edi + 0x20d2]
shl edx, 5
xor ax, dx
and ax, 0x7fff
mov word [edi + 0x20d2], ax
movzx edx, ax
mov ecx, dword [edi + 0x2050]
mov ax, word [ecx + edx*2]
mov bx, word [edi + 0x203c]
mov word [ecx + edx*2], bx
mov dx, word [edi + 0x203c]
and dx, 0x7fff
movzx edx, dx
mov ecx, dword [edi + 0x204c]
mov word [ecx + edx*2], ax
movzx edx, si
mov dword [edi + 0x2038], edx
mov bx, word [edi + 0x2036]
mov si, 2
test ax, ax
je 0x48ff09
movzx edx, word [edi + 0x20d0]
cmp edx, dword [edi + 0x2038]
jbe 0x48ff09
movzx edx, word [edi + 0x203c]
movzx ecx, ax
sub edx, ecx
cmp edx, 0x7efa
jg 0x48ff09
mov edx, eax
mov eax, edi
call fcn.0049044c
mov esi, eax
mov ax, word [edi + 0x2090]
cmp si, ax
jbe 0x48feeb
mov esi, eax
cmp si, 3
jne 0x48ff09
movzx eax, word [edi + 0x203c]
movzx edx, word [edi + 0x2036]
sub eax, edx
cmp eax, 0x1000
jle 0x48ff09
dec esi
mov eax, dword [edi + 0x2038]
cmp eax, 3
jb 0x48ffd4
movzx edx, si
cmp eax, edx
jb 0x48ffd4
movzx edx, word [edi + 0x203c]
dec edx
movzx ecx, bx
sub edx, ecx
mov ecx, eax
sub ecx, 3
mov eax, edi
call fcn.0048ebf0
mov byte [esp], al
mov ax, word [edi + 0x2038]
dec eax
sub word [edi + 0x2090], ax
sub dword [edi + 0x2038], 2
inc word [edi + 0x203c]
movzx eax, word [edi + 0x203c]
add eax, 3
mov edx, dword [edi + 0x2048]
movzx eax, byte [edx + eax - 1]
mov dx, word [edi + 0x20d2]
shl edx, 5
xor ax, dx
and ax, 0x7fff
mov word [edi + 0x20d2], ax
movzx edx, ax
mov ecx, dword [edi + 0x2050]
mov ax, word [ecx + edx*2]
mov bx, word [edi + 0x203c]
mov word [ecx + edx*2], bx
mov dx, word [edi + 0x203c]
and dx, 0x7fff
movzx edx, dx
mov ecx, dword [edi + 0x204c]
mov word [ecx + edx*2], ax
dec dword [edi + 0x2038]
cmp dword [edi + 0x2038], 0
jne 0x48ff55
mov byte [esp + 1], 0
mov si, 2
jmp 0x490013
cmp byte [esp + 1], 0
je 0x490003
movzx eax, word [edi + 0x203c]
mov edx, dword [edi + 0x2048]
xor ecx, ecx
mov cl, byte [edx + eax - 1]
xor edx, edx
mov eax, edi
call fcn.0048ebf0
mov byte [esp], al
dec word [edi + 0x2090]
jmp 0x490013
mov byte [esp + 1], 1
mov byte [esp], 0
dec word [edi + 0x2090]
cmp byte [esp], 0
je 0x490060
mov eax, dword [edi + 0x2094]
test eax, eax
jl 0x49003f
push 0
mov edx, dword [edi + 0x2048]
add edx, eax
movzx ecx, word [edi + 0x203c]
sub ecx, eax
mov eax, edi
call fcn.0048f9f0
jmp 0x490053
push 0
movzx ecx, word [edi + 0x203c]
sub ecx, eax
xor edx, edx
mov eax, edi
call fcn.0048f9f0
movzx eax, word [edi + 0x203c]
mov dword [edi + 0x2094], eax
inc word [edi + 0x203c]
jmp 0x490070
mov eax, edi
call fcn.0048f900
cmp word [edi + 0x2090], 0x106
jae 0x490084
cmp byte [edi + 0x2058], 0
je 0x490069
cmp word [edi + 0x2090], 0
jne 0x48fe38
cmp byte [esp + 1], 0
je 0x4900b7
movzx eax, word [edi + 0x203c]
mov edx, dword [edi + 0x2048]
xor ecx, ecx
mov cl, byte [edx + eax - 1]
xor edx, edx
mov eax, edi
call fcn.0048ebf0
test al, al
mov eax, dword [edi + 0x2094]
test eax, eax
jl 0x4900dd
push 1
mov edx, dword [edi + 0x2048]
add edx, eax
movzx ecx, word [edi + 0x203c]
sub ecx, eax
mov eax, edi
call fcn.0048f9f0
jmp 0x4900f1
push 1
movzx ecx, word [edi + 0x203c]
sub ecx, eax
xor edx, edx
mov eax, edi
call fcn.0048f9f0
pop edx
pop edi
pop esi
pop ebx
ret