Function at 0x48d444
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x1c
push edi
push esi
push ebx
mov ebx, dword [ebp + 8]
cmp dword [ebx + 0x4c090], 0
je 0x48d708
cmp dword [ebx + 0xc], 0
jne 0x48d708
lea eax, [ebx + 0x4020]
mov dword [ebp - 4], eax
lea edx, [ebx + 0x2c060]
mov dword [ebp - 8], edx
lea esi, [esi]
mov edx, dword [ebx + 0x4c06c]
shl edx, 5
mov ecx, dword [ebx + 0x4c084]
mov esi, dword [ebp - 4]
movzx eax, byte [esi + ecx + 2]
xor edx, eax
and edx, 0x7fff
mov dword [ebx + 0x4c06c], edx
and ecx, 0x7fff
movzx eax, word [ebx + edx*2 + 0x3c060]
mov dword [ebx + 0x4c070], eax
mov edx, dword [ebp - 8]
mov word [edx + ecx*2], ax
mov edx, dword [ebx + 0x4c06c]
movzx eax, word [ebx + 0x4c084]
mov word [ebx + edx*2 + 0x3c060], ax
mov ecx, dword [ebx + 0x4c07c]
mov dword [ebx + 0x4c080], ecx
mov eax, dword [ebx + 0x4c088]
mov dword [ebx + 0x4c074], eax
mov dword [ebx + 0x4c07c], 2
mov edx, dword [ebx + 0x4c070]
test edx, edx
je 0x48d561
cmp ecx, dword [ebx + 0x4c098]
jae 0x48d561
mov eax, dword [ebx + 0x4c084]
sub eax, edx
cmp eax, 0x7efa
ja 0x48d561
add esp, 0xfffffff8
push edx
push ebx
call fcn.0048cf60
mov dword [ebx + 0x4c07c], eax
mov edx, dword [ebx + 0x4c090]
add esp, 0x10
cmp eax, edx
jbe 0x48d537
mov dword [ebx + 0x4c07c], edx
cmp dword [ebx + 0x4c07c], 3
jne 0x48d561
mov eax, dword [ebx + 0x4c088]
mov esi, dword [ebx + 0x4c084]
sub esi, eax
mov eax, esi
cmp eax, 0x1000
jbe 0x48d561
mov dword [ebx + 0x4c07c], 2
mov eax, dword [ebx + 0x4c080]
cmp eax, 2
jbe 0x48d674
cmp dword [ebx + 0x4c07c], eax
ja 0x48d674
add esp, 0xfffffffc
add eax, 0xfffffffd
push eax
mov eax, dword [ebx + 0x4c074]
inc eax
mov edx, dword [ebx + 0x4c084]
sub edx, eax
mov eax, edx
push eax
push ebx
call fcn.0048eae8
mov dword [ebp - 0xc], eax
mov edx, dword [ebx + 0x4c090]
inc edx
mov eax, dword [ebx + 0x4c080]
sub edx, eax
mov dword [ebx + 0x4c090], edx
add eax, 0xfffffffe
mov dword [ebx + 0x4c080], eax
add esp, 0x10
mov edi, dword [ebp - 4]
mov esi, dword [ebp - 8]
lea esi, [esi]
mov edx, dword [ebx + 0x4c084]
lea eax, [edx + 1]
mov dword [ebx + 0x4c084], eax
mov eax, dword [ebx + 0x4c06c]
shl eax, 5
lea ecx, [edx + 1]
movzx edx, byte [edi + edx + 3]
xor eax, edx
and eax, 0x7fff
mov dword [ebx + 0x4c06c], eax
and ecx, 0x7fff
movzx eax, word [ebx + eax*2 + 0x3c060]
mov dword [ebx + 0x4c070], eax
mov word [esi + ecx*2], ax
mov edx, dword [ebx + 0x4c06c]
movzx eax, word [ebx + 0x4c084]
mov word [ebx + edx*2 + 0x3c060], ax
mov eax, dword [ebx + 0x4c080]
lea edx, [eax - 1]
mov dword [ebx + 0x4c080], edx
cmp eax, 1
jne 0x48d5c8
mov dword [ebx + 0x4c078], 0
mov dword [ebx + 0x4c07c], 2
inc dword [ebx + 0x4c084]
cmp dword [ebp - 0xc], 0
je 0x48d6e0
add esp, 0xfffffff8
push 0
push ebx
call fcn.0048e7d8
mov eax, dword [ebx + 0x4c084]
mov dword [ebx + 0x4c068], eax
jmp 0x48d6dd
cmp dword [ebx + 0x4c078], 0
je 0x48d6bc
add esp, 0xfffffffc
mov eax, dword [ebx + 0x4c084]
dec eax
mov esi, dword [ebp - 4]
movzx eax, byte [eax + esi]
push eax
push 0
push ebx
call fcn.0048eae8
add esp, 0x10
test eax, eax
je 0x48d6c6
add esp, 0xfffffff8
push 0
push ebx
call fcn.0048e7d8
mov eax, dword [ebx + 0x4c084]
mov dword [ebx + 0x4c068], eax
add esp, 0x10
jmp 0x48d6c6
mov dword [ebx + 0x4c078], 1
inc dword [ebx + 0x4c084]
dec dword [ebx + 0x4c090]
jmp 0x48d6e0
add esp, 0xfffffff4
push ebx
call fcn.0048d0b4
add esp, 0x10
cmp dword [ebx + 0x4c090], 0x105
ja 0x48d6f5
cmp dword [ebx + 0x4c08c], 0
je 0x48d6d4
cmp dword [ebx + 0x4c090], 0
je 0x48d708
cmp dword [ebx + 0xc], 0
je 0x48d47c
lea esp, [ebp - 0x28]
pop ebx
pop esi
pop edi
leave
ret