Function at 0x6e0e60
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x3c
mov edx, dword [ebp + 8]
mov ecx, dword [ebp + 0xc]
mov edi, dword [ebp + 0x10]
mov eax, dword [ebp + 0x14]
cmp dword [edx + 0xc8], ecx
je 0x6e12a3
mov edx, dword [ebp + 8]
mov ecx, dword [ebp + 0xc]
mov ebx, dword [edx + 4]
mov dword [edx + 0xc8], ecx
mov dword [edx + 0xcc], eax
test ebx, ebx
je 0x6e0f2f
mov eax, dword [edx + 8]
mov edx, dword [ebp + 0xc]
imul edx
mov ecx, edx
sar ecx, 0x1f
add ecx, 0x8000
add eax, ecx
adc edx, 0
shr eax, 0x10
shl edx, 0x10
add eax, edx
mov edx, dword [ebp + 8]
mov dword [edx + 0xc], eax
add eax, 0x20
and eax, 0xffffffc0
sub ebx, 1
mov dword [edx + 0x10], eax
mov dword [ebp - 0x10], ebx
je 0x6e0f2f
mov esi, edx
add esi, 0x20
mov ebx, dword [esi - 0xc]
mov edx, dword [ebp + 0xc]
mov eax, ebx
imul edx
mov ecx, edx
sar ecx, 0x1f
add ecx, 0x8000
add eax, ecx
adc edx, 0
shr eax, 0x10
shl edx, 0x10
add eax, edx
mov dword [ebp - 0x48], eax
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0xc]
mov eax, dword [ebp - 0x48]
sub eax, ecx
mov ebx, eax
sar ebx, 0x1f
xor eax, ebx
sub eax, ebx
add eax, 0xffffff80
cmovge ecx, dword [ebp - 0x48]
mov dword [esi - 8], ecx
add ecx, 0x20
and ecx, 0xffffffc0
mov dword [esi - 4], ecx
add esi, 0xc
sub dword [ebp - 0x10], 1
jne 0x6e0eda
mov edx, dword [ebp + 8]
cmp dword [edx + 0x194], edi
je 0x6e12be
mov eax, dword [ebp + 8]
mov edx, dword [ebp + 0x18]
mov ebx, dword [eax + 0xd0]
mov dword [eax + 0x194], edi
mov dword [eax + 0x198], edx
test ebx, ebx
je 0x6e0ffc
mov eax, dword [eax + 0xd4]
mov edx, edi
imul edx
mov ecx, edx
sar ecx, 0x1f
add ecx, 0x8000
add eax, ecx
adc edx, 0
shr eax, 0x10
shl edx, 0x10
add eax, edx
mov edx, dword [ebp + 8]
mov dword [edx + 0xd8], eax
add eax, 0x20
and eax, 0xffffffc0
sub ebx, 1
mov dword [edx + 0xdc], eax
mov dword [ebp - 0x14], ebx
je 0x6e0ffc
mov esi, edx
add esi, 0xec
mov ebx, dword [esi - 0xc]
mov edx, edi
mov eax, ebx
imul edx
mov ecx, edx
sar ecx, 0x1f
add ecx, 0x8000
add eax, ecx
adc edx, 0
shr eax, 0x10
shl edx, 0x10
add eax, edx
mov dword [ebp - 0x48], eax
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 0xd8]
mov eax, dword [ebp - 0x48]
sub eax, ecx
mov ebx, eax
sar ebx, 0x1f
xor eax, ebx
sub eax, ebx
add eax, 0xffffff80
cmovge ecx, dword [ebp - 0x48]
mov dword [esi - 8], ecx
add ecx, 0x20
and ecx, 0xffffffc0
mov dword [esi - 4], ecx
add esi, 0xc
sub dword [ebp - 0x14], 1
jne 0x6e0fa5
cmp edi, 0x20c49b9
jg 0x6e1239
mov ecx, dword [ebp + 8]
imul edx, edi, 0x7d
mov eax, dword [ecx + 0x9ac]
shl eax, 3
cmp edx, eax
setl byte [ecx + 0x9bc]
mov eax, dword [ebp + 8]
mov ebx, dword [eax + 0x9b0]
test ebx, ebx
jg 0x6e1035
jmp 0x6e1058
sub ebx, 1
je 0x6e1058
mov edx, edi
mov eax, ebx
imul edx
mov ecx, edx
sar ecx, 0x1f
add ecx, 0x8000
add eax, ecx
adc edx, 0
shr eax, 0x10
shl edx, 0x10
add eax, edx
cmp eax, 0x20
jg 0x6e1030
mov edx, dword [ebp + 8]
mov ecx, dword [ebp + 8]
mov dword [ebp - 0x18], 0
mov dword [edx + 0x9b4], ebx
add edx, 0x3a0
add ecx, 0x19c
mov dword [ebp - 0x40], edx
mov dword [ebp - 0x44], ecx
cmp dword [ebp - 0x18], 1
mov eax, dword [ebp - 0x40]
je 0x6e108f
jae 0x6e1283
mov eax, dword [ebp - 0x44]
mov esi, dword [eax]
test esi, esi
je 0x6e1149
lea ebx, [eax + 0x24]
lea esi, [esi]
mov eax, dword [ebx - 0x18]
mov edx, edi
imul edx
mov ecx, edx
sar ecx, 0x1f
add ecx, 0x8000
add eax, ecx
adc edx, 0
shr eax, 0x10
shl edx, 0x10
add eax, edx
add eax, dword [ebp + 0x18]
mov edx, edi
mov dword [ebx - 4], eax
mov eax, dword [ebx - 0x14]
imul edx
mov ecx, edx
sar ecx, 0x1f
add ecx, 0x8000
add eax, ecx
adc edx, 0
shr eax, 0x10
shl edx, 0x10
add eax, edx
add eax, dword [ebp + 0x18]
mov edx, edi
mov dword [ebx - 8], eax
mov eax, dword [ebx - 0x20]
imul edx
mov ecx, edx
sar ecx, 0x1f
add ecx, 0x8000
add eax, ecx
adc edx, 0
shr eax, 0x10
shl edx, 0x10
add eax, edx
add eax, dword [ebp + 0x18]
mov edx, edi
mov dword [ebx - 0x10], eax
mov eax, dword [ebx - 0x1c]
imul edx
mov ecx, edx
sar ecx, 0x1f
add ecx, 0x8000
add eax, ecx
adc edx, 0
shr eax, 0x10
shl edx, 0x10
add eax, edx
mov dword [ebx - 0xc], eax
mov eax, dword [ebx - 0x10]
add eax, 0x20
and eax, 0xffffffc0
mov dword [ebx - 0x10], eax
add ebx, 0x20
sub esi, 1
jne 0x6e10a0
add dword [ebp - 0x18], 1
cmp dword [ebp - 0x18], 4
jne 0x6e107d
mov eax, dword [ebp + 8]
mov edx, dword [ebp + 8]
mov dword [ebp - 0x20], 0
add eax, 0x3a0
add edx, 0x7a8
mov dword [ebp - 0x38], eax
mov dword [ebp - 0x3c], edx
mov edx, dword [ebp - 0x20]
mov ecx, dword [ebp - 0x3c]
mov eax, dword [ebp - 0x38]
test edx, edx
mov dword [ebp - 0x2c], ecx
jne 0x6e1199
mov edx, dword [ebp + 8]
mov eax, dword [ebp + 8]
add edx, 0x5a4
add eax, 0x19c
mov dword [ebp - 0x2c], edx
mov ecx, dword [eax]
test ecx, ecx
mov dword [ebp - 0x28], ecx
je 0x6e126b
add eax, 4
mov edx, dword [ebp - 0x2c]
mov dword [ebp - 0x24], eax
mov eax, dword [ebp - 0x2c]
add edx, 4
mov eax, dword [eax]
mov dword [ebp - 0x34], edx
mov dword [ebp - 0x30], eax
mov esi, eax
test esi, esi
je 0x6e122a
mov ecx, dword [ebp - 0x24]
mov edx, dword [ebp - 0x2c]
mov ebx, dword [ebp - 0x34]
mov ecx, dword [ecx]
mov eax, ecx
sub eax, dword [edx + 4]
mov dword [ebp - 0x1c], ecx
jmp 0x6e11e5
sub esi, 1
je 0x6e122a
add ebx, 0x20
mov eax, dword [ebp - 0x1c]
sub eax, dword [ebx]
mov edx, eax
sar edx, 0x1f
xor eax, edx
sub eax, edx
mov edx, edi
imul edx
mov ecx, edx
sar ecx, 0x1f
add ecx, 0x8000
add eax, ecx
adc edx, 0
shr eax, 0x10
shl edx, 0x10
add eax, edx
cmp eax, 0x3f
jg 0x6e11d8
mov ecx, dword [ebp - 0x24]
mov eax, dword [ebx + 0x1c]
mov dword [ecx + 0x1c], eax
mov eax, dword [ebx + 0x18]
mov dword [ecx + 0x18], eax
mov eax, dword [ebx + 0x10]
mov dword [ecx + 0x10], eax
mov eax, dword [ebx + 0x14]
mov dword [ecx + 0x14], eax
sub dword [ebp - 0x28], 1
je 0x6e126b
add dword [ebp - 0x24], 0x20
mov esi, dword [ebp - 0x30]
jmp 0x6e11bf
mov edx, dword [ebp + 8]
mov eax, dword [edx + 0x9ac]
mov edx, 0x10624dd3
lea ecx, [eax*8]
mov eax, ecx
imul edx
sar ecx, 0x1f
sar edx, 3
sub edx, ecx
cmp edi, edx
mov edx, dword [ebp + 8]
setl byte [edx + 0x9bc]
jmp 0x6e1020
add dword [ebp - 0x20], 1
cmp dword [ebp - 0x20], 2
jne 0x6e1175
add esp, 0x3c
xor eax, eax
pop ebx
pop esi
pop edi
pop ebp
ret
cmp dword [ebp - 0x18], 2
je 0x6e1296
mov eax, dword [ebp + 8]
add eax, 0x7a8
jmp 0x6e108f
mov eax, dword [ebp + 8]
add eax, 0x5a4
jmp 0x6e108f
cmp dword [edx + 0xcc], eax
jne 0x6e0e81
mov edx, dword [ebp + 8]
cmp dword [edx + 0x194], edi
jne 0x6e0f3e
mov ecx, dword [ebp + 0x18]
cmp dword [edx + 0x198], ecx
jne 0x6e0f3e
jmp 0x6e1279