Function at 0x45abfa
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x14
mov esi, dword [esp + 0x34]
mov ecx, dword [0x42b238]
movzx eax, word [esp + 0x30]
test esi, esi
mov dword [esp + 0x10], ecx
je 0x45ac1f
mov cx, word [esp + 0x38]
jmp 0x45ac29
xor ecx, ecx
lea esi, [esp + 7]
inc ecx
mov byte [esi], 0
mov edi, dword [esp + 0x28]
mov dword [esp], ecx
movsx ebx, ax
xor ecx, ecx
mov eax, ecx
cdq
idiv ebx
mov eax, dword [esp + 0x2c]
movzx ebp, byte [eax + edx]
lea eax, [ecx + 1]
cdq
shl ebp, 0x18
xor ebp, dword [edi + ecx + 0x1000]
mov dword [edi + ecx + 0x1000], ebp
idiv ebx
mov eax, dword [esp + 0x2c]
movzx edi, byte [eax + edx]
mov eax, dword [esp + 0x28]
shl edi, 0x10
xor edi, ebp
mov dword [eax + ecx + 0x1000], edi
lea eax, [ecx + 2]
cdq
idiv ebx
mov eax, dword [esp + 0x2c]
movzx ebp, byte [eax + edx]
lea eax, [ecx + 3]
cdq
shl ebp, 8
xor ebp, edi
mov edi, dword [esp + 0x28]
mov dword [edi + ecx + 0x1000], ebp
idiv ebx
mov eax, dword [esp + 0x2c]
movzx eax, byte [eax + edx]
xor eax, ebp
mov dword [edi + ecx + 0x1000], eax
add ecx, 4
cmp ecx, 0x48
jne 0x45ac35
movsx ebp, word [esp]
xor ebx, ebx
lea eax, [esp + 8]
xor edx, edx
mov dword [eax + 4], ebx
mov dword [eax], ebx
xor edi, edi
mov dword [esp], edx
mov ecx, edi
lea eax, [ebx + edi]
sar ecx, 0x1f
cdq
shr ecx, 0x1e
idiv ebp
add ecx, edi
movzx eax, byte [esi + edx]
mov edx, edi
and ecx, 0x1c
sub edx, ecx
mov ecx, 0x18
shl edx, 3
sub ecx, edx
shl eax, cl
mov ecx, edi
inc edi
and ecx, 0xfffffffc
xor dword [esp + ecx + 8], eax
cmp edi, 8
jne 0x45acc4
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 8]
add ebx, 8
mov edi, eax
push edi
lea eax, [esp + 0xc]
push eax
call fcn.0045a87c
add esp, 8
mov edx, dword [esp]
mov eax, dword [esp + 8]
mov dword [edi + edx*4 + 0x1000], eax
mov ecx, edx
mov eax, dword [esp + 0xc]
or ecx, 1
cmp edx, 0x10
lea edx, [edx + 2]
mov dword [edi + ecx*4 + 0x1000], eax
jl 0x45acbf
xor edx, edx
mov edi, 0x48
xor ebx, ebx
mov dword [esp], edx
mov ecx, ebx
lea eax, [edi + ebx]
sar ecx, 0x1f
cdq
shr ecx, 0x1e
idiv ebp
add ecx, ebx
movzx eax, byte [esi + edx]
mov edx, ebx
and ecx, 0x1c
sub edx, ecx
mov ecx, 0x18
shl edx, 3
sub ecx, edx
shl eax, cl
mov ecx, ebx
inc ebx
and ecx, 0xfffffffc
xor dword [esp + ecx + 8], eax
cmp ebx, 8
jne 0x45ad4b
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 8]
add edi, 8
mov ebx, eax
push ebx
lea eax, [esp + 0xc]
push eax
call fcn.0045a87c
add esp, 8
mov edx, dword [esp]
mov eax, dword [esp + 8]
mov dword [ebx + edx*4], eax
mov ecx, edx
mov eax, dword [esp + 0xc]
or ecx, 1
cmp edx, 0xfe
lea edx, [edx + 2]
mov dword [ebx + ecx*4], eax
jl 0x45ad46
xor edx, edx
mov edi, 0x448
xor ebx, ebx
mov dword [esp], edx
mov ecx, ebx
lea eax, [edi + ebx]
sar ecx, 0x1f
cdq
shr ecx, 0x1e
idiv ebp
add ecx, ebx
movzx eax, byte [esi + edx]
mov edx, ebx
and ecx, 0x1c
sub edx, ecx
mov ecx, 0x18
shl edx, 3
sub ecx, edx
shl eax, cl
mov ecx, ebx
inc ebx
and ecx, 0xfffffffc
xor dword [esp + ecx + 8], eax
cmp ebx, 8
jne 0x45adcd
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 8]
add edi, 8
mov ebx, eax
push ebx
lea eax, [esp + 0xc]
push eax
call fcn.0045a87c
add esp, 8
mov edx, dword [esp]
mov eax, dword [esp + 8]
mov dword [ebx + edx*4 + 0x400], eax
mov ecx, edx
mov eax, dword [esp + 0xc]
or ecx, 1
cmp edx, 0xfe
lea edx, [edx + 2]
mov dword [ebx + ecx*4 + 0x400], eax
jl 0x45adc8
xor edx, edx
mov edi, 0x848
xor ebx, ebx
mov dword [esp], edx
mov ecx, ebx
lea eax, [edi + ebx]
sar ecx, 0x1f
cdq
shr ecx, 0x1e
idiv ebp
add ecx, ebx
movzx eax, byte [esi + edx]
mov edx, ebx
and ecx, 0x1c
sub edx, ecx
mov ecx, 0x18
shl edx, 3
sub ecx, edx
shl eax, cl
mov ecx, ebx
inc ebx
and ecx, 0xfffffffc
xor dword [esp + ecx + 8], eax
cmp ebx, 8
jne 0x45ae5b
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 8]
add edi, 8
mov ebx, eax
push ebx
lea eax, [esp + 0xc]
push eax
call fcn.0045a87c
add esp, 8
mov edx, dword [esp]
mov eax, dword [esp + 8]
mov dword [ebx + edx*4 + 0x800], eax
mov ecx, edx
mov eax, dword [esp + 0xc]
or ecx, 1
cmp edx, 0xfe
lea edx, [edx + 2]
mov dword [ebx + ecx*4 + 0x800], eax
jl 0x45ae56
xor edx, edx
mov edi, 0xc48
xor ebx, ebx
mov dword [esp], edx
mov ecx, ebx
lea eax, [edi + ebx]
sar ecx, 0x1f
cdq
shr ecx, 0x1e
idiv ebp
add ecx, ebx
movzx eax, byte [esi + edx]
mov edx, ebx
and ecx, 0x1c
sub edx, ecx
mov ecx, 0x18
shl edx, 3
sub ecx, edx
shl eax, cl
mov ecx, ebx
inc ebx
and ecx, 0xfffffffc
xor dword [esp + ecx + 8], eax
cmp ebx, 8
jne 0x45aee9
mov eax, dword [esp + 0x28]
mov edx, dword [esp + 0xc]
mov ecx, dword [esp + 8]
add edi, 8
mov ebx, eax
push ebx
lea eax, [esp + 0xc]
push eax
call fcn.0045a87c
add esp, 8
mov edx, dword [esp]
mov eax, dword [esp + 8]
mov dword [ebx + edx*4 + 0xc00], eax
mov ecx, edx
mov eax, dword [esp + 0xc]
or ecx, 1
cmp edx, 0xfe
lea edx, [edx + 2]
mov dword [ebx + ecx*4 + 0xc00], eax
jl 0x45aee4
mov ecx, dword [esp + 0x10]
call fcn.00497c4a
add esp, 0x14
pop esi
pop edi
pop ebx
pop ebp
ret