Function at 0x10013e60
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x50
push ebx
mov ebx, ecx
mov dword [ebp - 0xc], edx
push esi
push edi
mov dword [ebp - 0x20], ebx
cmp dword [ebx + 0x8874], 0
jne 0x10014044
mov eax, dword [ebx + 0x8870]
mov dword [ebp - 0x3c], eax
test eax, eax
je 0x10014044
mov edi, dword [ebx + 0x8614]
mov ecx, edx
mov ebx, dword [ebx + 0x85b8]
mov eax, 1
shl eax, cl
mov esi, edi
mov dword [ebp - 0x14], eax
mov ecx, 0x10
shl esi, 4
mov eax, dword [ebx + 0x24]
add esi, 0xfffffff0
sub eax, esi
inc eax
cmp eax, ecx
cmovb ecx, eax
mov eax, dword [ebx + 0x1c]
inc eax
mov dword [ebp - 0x1c], ecx
mov ecx, dword [ebx + 0x20]
xor edx, edx
and ecx, 0xf
mov dword [ebp - 0x18], eax
cmp esi, dword [ebx + 0x20]
cmovbe edx, ecx
mov ecx, dword [ebp - 0x14]
lea esi, [ecx - 1]
add esi, edx
xor edx, edx
mov eax, esi
div ecx
mov eax, dword [ebx + 0x18]
dec eax
sub esi, edx
add eax, ecx
mov dword [ebp - 0x10], esi
mov dword [ebp - 8], eax
xor edx, edx
div ecx
mov eax, dword [ebp - 0x20]
sub dword [ebp - 8], edx
mov edx, dword [eax + 0xc]
mov dword [ebp - 0x38], edx
xor edx, edx
cmp dword [eax + 0xc], 4
sete dl
add edx, 3
add edx, dword [eax + 0x18]
mov eax, dword [eax + 0x10]
mov dword [ebp - 0x34], eax
mov dword [ebp - 0x30], edx
mov edx, dword [ebp - 0x3c]
mov eax, dword [edx + 0x86dc]
mov dword [ebp - 0x28], eax
mov al, byte [edx + 0x808c]
mov byte [ebp - 1], al
mov al, byte [edx + 0x808d]
xor edx, edx
mov byte [ebp - 2], al
mov eax, dword [ebx + 0x28]
mov dword [ebp - 0x2c], eax
lea eax, [edi - 1]
shl eax, 4
div ecx
mov ecx, dword [ebx + 0x2c]
lea eax, [ecx + eax*4]
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x38]
cmp eax, 7
je 0x10013f63
cmp eax, 4
jne 0x10014558
mov eax, dword [ebp - 0x34]
cmp eax, 1
jne 0x1001404d
mov ecx, dword [ebp + 0xc]
mov eax, 0x80
shl eax, cl
cdq
idiv dword [ebp + 8]
mov dword [ebp - 0x3c], eax
cmp esi, dword [ebp - 0x1c]
jae 0x10014044
mov ebx, dword [ebp - 0x14]
mov edx, esi
mov ecx, dword [ebp - 0xc]
mov edi, esi
mov eax, dword [ebp - 8]
shl edx, 4
shl ebx, 4
mov dword [ebp - 0x34], edx
mov dword [ebp - 0x40], ebx
mov ebx, dword [ebp - 0x24]
mov esi, eax
mov eax, edi
shr eax, cl
mov eax, dword [ebx + eax*4]
mov ebx, dword [ebp - 0x14]
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 8]
cmp eax, dword [ebp - 0x18]
jae 0x10014030
mov edi, dword [ebp - 0xc]
nop
mov eax, esi
and eax, 0xf
movzx ecx, byte [eax + edx + 0x101f08e0]
mov eax, esi
and eax, 0xfffffff0
shl eax, 4
add ecx, eax
mov eax, dword [ebp - 0x28]
mov edx, dword [eax + ecx*4]
add edx, dword [ebp - 0x3c]
imul edx, dword [ebp + 8]
mov ecx, dword [ebp + 0xc]
sar edx, cl
test edx, edx
jns 0x10013ff1
xor edx, edx
jmp 0x10013fff
cmp edx, 0xff
mov eax, 0xff
cmovg edx, eax
mov eax, esi
mov ecx, edi
shr eax, cl
add esi, ebx
mov ecx, dword [ebp - 0x2c]
mov eax, dword [ecx + eax*4]
mov ecx, dword [ebp - 0x20]
add eax, dword [ecx + 0x80a8]
add eax, dword [ebp - 0x38]
mov ecx, dword [ebp - 0x30]
mov byte [eax + ecx], dl
mov edx, dword [ebp - 0x34]
cmp esi, dword [ebp - 0x18]
jb 0x10013fc0
mov edi, dword [ebp - 0x10]
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 8]
add edx, dword [ebp - 0x40]
add edi, ebx
mov dword [ebp - 0x10], edi
mov dword [ebp - 0x34], edx
cmp edi, dword [ebp - 0x1c]
jb 0x10013fa2
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
cmp eax, 2
jne 0x10014143
mov ecx, dword [ebp + 0xc]
mov eax, 0x8000
shl eax, cl
cdq
idiv dword [ebp + 8]
mov dword [ebp - 0x40], eax
cmp esi, dword [ebp - 0x1c]
jae 0x10014044
movzx eax, byte [ebp - 1]
mov edx, esi
mov ebx, dword [ebp - 0x14]
mov edi, esi
mov ecx, dword [ebp - 0xc]
shl edx, 4
shl ebx, 4
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp - 8]
mov dword [ebp - 0x34], edx
mov dword [ebp - 0x44], ebx
nop dword [eax]
mov ebx, dword [ebp - 0x24]
mov esi, eax
mov eax, edi
shr eax, cl
mov eax, dword [ebx + eax*4]
mov ebx, dword [ebp - 0x14]
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 8]
cmp eax, dword [ebp - 0x18]
jae 0x10014126
mov edi, dword [ebp - 0xc]
nop dword [eax]
mov eax, esi
and eax, 0xf
movzx ecx, byte [eax + edx + 0x101f08e0]
mov eax, esi
and eax, 0xfffffff0
shl eax, 4
add ecx, eax
mov eax, dword [ebp - 0x28]
mov edx, dword [eax + ecx*4]
add edx, dword [ebp - 0x40]
imul edx, dword [ebp + 8]
mov ecx, dword [ebp + 0xc]
sar edx, cl
mov ecx, dword [ebp - 0x3c]
shl edx, cl
test edx, edx
jns 0x100140e6
xor edx, edx
jmp 0x100140f4
cmp edx, 0xffff
mov eax, 0xffff
cmovg edx, eax
mov eax, esi
mov ecx, edi
shr eax, cl
add esi, ebx
mov ecx, dword [ebp - 0x2c]
mov ecx, dword [ecx + eax*4]
mov eax, dword [ebp - 0x20]
add ecx, dword [ebp - 0x38]
add ecx, dword [ebp - 0x30]
mov eax, dword [eax + 0x80a8]
mov word [eax + ecx*2], dx
mov edx, dword [ebp - 0x34]
cmp esi, dword [ebp - 0x18]
jb 0x100140b0
mov edi, dword [ebp - 0x10]
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 8]
add edx, dword [ebp - 0x44]
add edi, ebx
mov dword [ebp - 0x10], edi
mov dword [ebp - 0x34], edx
cmp edi, dword [ebp - 0x1c]
jb 0x10014090
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
cmp eax, 3
jne 0x10014237
cmp esi, dword [ebp - 0x1c]
jae 0x10014044
movzx eax, byte [ebp - 1]
mov edx, esi
mov ebx, dword [ebp - 0x14]
mov edi, esi
mov ecx, dword [ebp - 0xc]
shl edx, 4
shl ebx, 4
mov dword [ebp - 0x44], eax
mov eax, dword [ebp - 8]
mov dword [ebp - 0x34], edx
mov dword [ebp - 0x3c], ebx
mov ebx, dword [ebp - 0x24]
mov esi, eax
mov eax, edi
shr eax, cl
mov eax, dword [ebx + eax*4]
mov ebx, dword [ebp - 0x14]
mov dword [ebp - 0x40], eax
mov eax, dword [ebp - 8]
cmp eax, dword [ebp - 0x18]
jae 0x1001421a
mov edi, dword [ebp - 0xc]
nop word [eax + eax]
mov eax, esi
and eax, 0xf
movzx ecx, byte [eax + edx + 0x101f08e0]
mov eax, esi
and eax, 0xfffffff0
shl eax, 4
add ecx, eax
mov eax, dword [ebp - 0x28]
mov edx, dword [eax + ecx*4]
imul edx, dword [ebp + 8]
mov ecx, dword [ebp + 0xc]
sar edx, cl
mov ecx, dword [ebp - 0x44]
shl edx, cl
cmp edx, 0xffff8000
jge 0x100141da
mov edx, 0xffff8000
jmp 0x100141e8
cmp edx, 0x7fff
mov eax, 0x7fff
cmovg edx, eax
mov eax, esi
mov ecx, edi
shr eax, cl
add esi, ebx
mov ecx, dword [ebp - 0x2c]
mov ecx, dword [ecx + eax*4]
mov eax, dword [ebp - 0x20]
add ecx, dword [ebp - 0x40]
add ecx, dword [ebp - 0x30]
mov eax, dword [eax + 0x80a8]
mov word [eax + ecx*2], dx
mov edx, dword [ebp - 0x34]
cmp esi, dword [ebp - 0x18]
jb 0x100141a0
mov edi, dword [ebp - 0x10]
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 8]
add edx, dword [ebp - 0x3c]
add edi, ebx
mov dword [ebp - 0x10], edi
mov dword [ebp - 0x34], edx
cmp edi, dword [ebp - 0x1c]
jb 0x10014175
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
cmp eax, 4
jne 0x10014307
cmp esi, dword [ebp - 0x1c]
jae 0x10014044
mov ebx, dword [ebp - 0x14]
mov edx, esi
mov ecx, dword [ebp - 0xc]
mov edi, esi
mov eax, dword [ebp - 8]
shl edx, 4
shl ebx, 4
mov dword [ebp - 0x34], edx
mov dword [ebp - 0x40], ebx
mov ebx, dword [ebp - 0x24]
mov esi, eax
mov eax, edi
shr eax, cl
mov eax, dword [ebx + eax*4]
mov ebx, dword [ebp - 0x14]
mov dword [ebp - 0x44], eax
mov eax, dword [ebp - 8]
cmp eax, dword [ebp - 0x18]
jae 0x100142ea
mov edi, dword [ebp - 0xc]
nop
mov eax, esi
and eax, 0xf
movzx ecx, byte [eax + edx + 0x101f08e0]
mov eax, esi
and eax, 0xfffffff0
shl eax, 4
add ecx, eax
mov eax, dword [ebp - 0x28]
mov edx, dword [eax + ecx*4]
imul edx, dword [ebp + 8]
mov ecx, dword [ebp + 0xc]
sar edx, cl
mov ecx, edi
mov eax, edx
and edx, 0x7fff
sar eax, 0x1f
movzx eax, ax
xor edx, eax
sub edx, eax
mov eax, esi
shr eax, cl
add esi, ebx
mov ecx, dword [ebp - 0x2c]
mov ecx, dword [ecx + eax*4]
mov eax, dword [ebp - 0x20]
add ecx, dword [ebp - 0x44]
add ecx, dword [ebp - 0x30]
mov eax, dword [eax + 0x80a8]
mov word [eax + ecx*2], dx
mov edx, dword [ebp - 0x34]
cmp esi, dword [ebp - 0x18]
jb 0x10014280
mov edi, dword [ebp - 0x10]
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 8]
add edx, dword [ebp - 0x40]
add edi, ebx
mov dword [ebp - 0x10], edi
mov dword [ebp - 0x34], edx
cmp edi, dword [ebp - 0x1c]
jb 0x10014262
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
cmp eax, 6
jne 0x100143d9
cmp esi, dword [ebp - 0x1c]
jae 0x10014044
movzx eax, byte [ebp - 1]
mov edx, esi
mov ebx, dword [ebp - 0x14]
mov edi, esi
mov ecx, dword [ebp - 0xc]
shl edx, 4
shl ebx, 4
mov dword [ebp - 0x44], eax
mov eax, dword [ebp - 8]
mov dword [ebp - 0x34], edx
mov dword [ebp - 0x3c], ebx
nop dword [eax]
mov ebx, dword [ebp - 0x24]
mov esi, eax
mov eax, edi
shr eax, cl
mov eax, dword [ebx + eax*4]
mov ebx, dword [ebp - 0x14]
mov dword [ebp - 0x40], eax
mov eax, dword [ebp - 8]
cmp eax, dword [ebp - 0x18]
jae 0x100143bc
mov edi, dword [ebp - 0xc]
nop dword [eax]
mov eax, esi
and eax, 0xf
movzx ecx, byte [eax + edx + 0x101f08e0]
mov eax, esi
and eax, 0xfffffff0
shl eax, 4
add ecx, eax
mov eax, dword [ebp - 0x28]
mov edx, dword [eax + ecx*4]
mov eax, esi
imul edx, dword [ebp + 8]
add esi, ebx
mov ecx, dword [ebp + 0xc]
sar edx, cl
mov ecx, dword [ebp - 0x44]
shl edx, cl
mov ecx, edi
shr eax, cl
mov ecx, dword [ebp - 0x2c]
mov ecx, dword [ecx + eax*4]
mov eax, dword [ebp - 0x20]
add ecx, dword [ebp - 0x40]
add ecx, dword [ebp - 0x30]
mov eax, dword [eax + 0x80a8]
mov dword [eax + ecx*4], edx
mov edx, dword [ebp - 0x34]
cmp esi, dword [ebp - 0x18]
jb 0x10014360
mov edi, dword [ebp - 0x10]
mov ecx, dword [ebp - 0xc]
mov eax, dword [ebp - 8]
add edx, dword [ebp - 0x3c]
add edi, ebx
mov dword [ebp - 0x10], edi
mov dword [ebp - 0x34], edx
cmp edi, dword [ebp - 0x1c]
jb 0x10014340
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
cmp eax, 7
jne 0x10014558
cmp esi, dword [ebp - 0x1c]
jae 0x10014044
movzx ecx, byte [ebp - 1]
mov eax, 0x17
mov ebx, dword [ebp - 8]
sub eax, ecx
mov dword [ebp - 0x40], eax
mov edi, esi
mov eax, dword [ebp - 0x14]
shl edi, 4
shl eax, 4
mov dword [ebp - 0x3c], ecx
mov ecx, dword [ebp - 0xc]
mov dword [ebp - 0x34], edi
mov dword [ebp - 0x50], eax
mov edi, dword [ebp - 0x24]
mov eax, esi
shr eax, cl
mov edx, ebx
mov dword [ebp - 0x38], edx
mov eax, dword [edi + eax*4]
mov edi, dword [ebp - 0x34]
mov dword [ebp - 0x4c], eax
cmp ebx, dword [ebp - 0x18]
jae 0x10014538
mov esi, dword [ebp - 0x3c]
mov ebx, 1
movsx eax, byte [ebp - 2]
mov ecx, esi
shl ebx, cl
mov dword [ebp - 0x44], eax
nop dword [eax]
nop dword [eax + eax]
mov eax, edx
and eax, 0xf
movzx ecx, byte [eax + edi + 0x101f08e0]
mov eax, edx
and eax, 0xfffffff0
shl eax, 4
add ecx, eax
mov eax, dword [ebp - 0x28]
mov eax, dword [eax + ecx*4]
imul eax, dword [ebp + 8]
mov ecx, dword [ebp + 0xc]
sar eax, cl
mov ecx, eax
sar ecx, 0x1f
mov edx, ecx
mov dword [ebp - 0x48], ecx
xor edx, eax
sub edx, ecx
mov ecx, esi
mov eax, edx
mov esi, ebx
shr eax, cl
lea ecx, [ebx - 1]
and edx, ecx
mov edi, eax
or edx, ebx
mov ecx, 1
test eax, eax
cmove edi, ecx
xor esi, edx
test eax, eax
mov eax, 0x7f
cmovne esi, edx
sub eax, dword [ebp - 0x44]
add edi, eax
cmp esi, ebx
jge 0x100144c4
cmp edi, 1
jle 0x100144c4
test esi, esi
jle 0x100144c4
add esi, esi
dec edi
cmp esi, ebx
jl 0x100144b4
mov ecx, dword [ebp - 0x40]
mov eax, esi
xor eax, ebx
mov edx, esi
cmp esi, ebx
cmovge edx, eax
xor eax, eax
shl edx, cl
cmp esi, ebx
mov ecx, dword [ebp - 0xc]
cmovge eax, edi
mov esi, dword [ebp - 0x3c]
shl eax, 0x17
or edx, eax
mov edi, dword [ebp - 0x34]
mov eax, dword [ebp - 0x48]
and eax, 0x80000000
or edx, eax
mov dword [ebp - 0x48], edx
mov edx, dword [ebp - 0x38]
mov eax, edx
movss xmm0, dword [ebp - 0x48]
shr eax, cl
mov ecx, dword [ebp - 0x2c]
mov ecx, dword [ecx + eax*4]
mov eax, dword [ebp - 0x20]
add ecx, dword [ebp - 0x4c]
add ecx, dword [ebp - 0x30]
mov eax, dword [eax + 0x80a8]
movss dword [eax + ecx*4], xmm0
mov eax, dword [ebp - 0x14]
add edx, eax
mov dword [ebp - 0x38], edx
cmp edx, dword [ebp - 0x18]
jb 0x10014450
mov esi, dword [ebp - 0x10]
mov ecx, dword [ebp - 0xc]
mov ebx, dword [ebp - 8]
jmp 0x1001453b
mov eax, dword [ebp - 0x14]
add edi, dword [ebp - 0x50]
add esi, eax
mov dword [ebp - 0x10], esi
mov dword [ebp - 0x34], edi
cmp esi, dword [ebp - 0x1c]
jb 0x10014413
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret
pop edi
pop esi
or eax, 0xffffffff
pop ebx
mov esp, ebp
pop ebp
ret