Function at 0x61c830
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push esi
push edi
push ebx
sub esp, 0x18
mov eax, dword [ebp + 8]
mov ebx, dword [ebp + 0xc]
mov ecx, dword [eax + 8]
lea edx, [ecx - 5]
cmp edx, 0xc
ja 0x61cbb7
mov eax, dword [ebp + 0x10]
test byte [eax + 0x1a5], 0x20
je 0x61c93c
mov eax, dword [ebp + 8]
mov edx, dword [eax]
cmp ebx, 1
je 0x61cd1b
mov esi, ebx
shr esi, 0x1f
add esi, ebx
sar esi, 1
test esi, esi
jle 0x61cbad
mov eax, esi
shr eax, 1
je 0x61cd11
mov edi, dword [ebp + 0x14]
xor ecx, ecx
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x18], edx
add edi, ebx
mov dword [ebp - 0x20], edi
lea edi, [ebx + edx]
mov dword [ebp - 0x24], esi
mov eax, ecx
mov edx, edi
nop
lea esi, [esi]
lea edi, [edi]
mov ebx, dword [ebp - 0x18]
mov esi, dword [ebp + 0x14]
movzx edi, byte [ebx + ecx*2]
movzx ebx, byte [eax + edx - 1]
xor edi, ebx
mov byte [esi + ecx*2], bl
movzx ebx, byte [eax + edx - 1]
xor ebx, edi
mov edi, dword [ebp - 0x20]
mov byte [eax + edi - 1], bl
mov ebx, dword [ebp - 0x18]
mov edi, dword [ebp + 0x14]
movzx esi, byte [ebx + ecx*2 + 1]
movzx ebx, byte [eax + edx - 2]
xor esi, ebx
mov byte [edi + ecx*2 + 1], bl
inc ecx
movzx ebx, byte [eax + edx - 2]
xor ebx, esi
mov esi, dword [ebp - 0x20]
mov byte [eax + esi - 2], bl
add eax, 0xfffffffe
cmp ecx, dword [ebp - 0x1c]
jb 0x61c8b0
mov esi, dword [ebp - 0x24]
lea edi, [ecx + ecx + 1]
mov edx, dword [ebp - 0x18]
mov ebx, dword [ebp + 0xc]
lea eax, [edi - 1]
cmp eax, esi
jae 0x61cbad
mov esi, dword [ebp + 0x14]
movzx ecx, byte [edx + edi - 1]
add edx, ebx
sub edx, edi
add ebx, esi
sub ebx, edi
movzx eax, byte [edx]
xor ecx, eax
mov byte [edi + esi - 1], al
movzx edx, byte [edx]
xor edx, ecx
mov byte [ebx], dl
jmp 0x61cbad
cmp ebx, 1
je 0x61cd28
cmp ebx, 2
je 0x61cb30
cmp ebx, 4
jne 0x61c9e1
mov eax, dword [ebp + 8]
mov eax, dword [eax]
mov edx, eax
and edx, 3
jne 0x61c967
mov edi, dword [eax]
jmp 0x61c989
and eax, 0xfffffffc
test edx, edx
je 0x61c97c
shl edx, 3
mov ecx, edx
neg ecx
mov edi, dword [eax + 4]
shl edi, cl
jmp 0x61c981
shl edx, 3
xor edi, edi
mov ecx, edx
mov eax, dword [eax]
shr eax, cl
or edi, eax
mov edx, dword [ebp + 0x14]
and edx, 3
jne 0x61c99b
mov eax, dword [ebp + 0x14]
mov dword [eax], edi
jmp 0x61cbad
mov esi, dword [ebp + 0x14]
and esi, 0xfffffffc
test edx, edx
je 0x61c9c9
shl edx, 3
mov ebx, 0xffffffff
mov ecx, edx
shl ebx, cl
neg ecx
mov eax, dword [esi + 4]
and eax, ebx
mov dword [ebp - 0x24], eax
mov eax, edi
shr eax, cl
mov ecx, dword [ebp - 0x24]
or ecx, eax
mov dword [esi + 4], ecx
jmp 0x61c9d0
xor edx, edx
mov ebx, 0xffffffff
not ebx
mov ecx, edx
and ebx, dword [esi]
shl edi, cl
or ebx, edi
mov dword [esi], ebx
jmp 0x61cbad
cmp ebx, 8
jne 0x61cb1d
mov eax, dword [ebp + 8]
mov edx, dword [eax]
test dl, 3
jne 0x61c9fb
mov esi, dword [edx]
mov ebx, dword [edx + 4]
jmp 0x61ca5a
mov edi, edx
and edi, 0xfffffff8
and edx, 7
je 0x61ca2b
shl edx, 3
mov ecx, edx
neg ecx
add ecx, 0x40
mov eax, dword [edi + 8]
mov ebx, dword [edi + 0xc]
cmp ecx, 0x1f
ja 0x61ca23
mov esi, eax
shld ebx, esi, cl
shl esi, cl
jmp 0x61ca32
mov ebx, eax
xor esi, esi
shl ebx, cl
jmp 0x61ca32
xor esi, esi
shl edx, 3
xor ebx, ebx
mov eax, dword [edi]
mov edi, dword [edi + 4]
cmp edx, 0x1f
ja 0x61ca48
mov ecx, edx
shrd eax, edi, cl
shr edi, cl
mov dword [ebp - 0x24], edi
jmp 0x61ca55
mov ecx, edx
mov eax, edi
mov dword [ebp - 0x24], 0
shr eax, cl
or ebx, dword [ebp - 0x24]
or esi, eax
test byte [ebp + 0x14], 3
jne 0x61ca6d
mov eax, dword [ebp + 0x14]
mov dword [eax], esi
mov dword [eax + 4], ebx
jmp 0x61cbad
mov edx, dword [ebp + 0x14]
mov eax, edx
and eax, 0xfffffff8
mov dword [ebp - 0x10], eax
and edx, 7
je 0x61cae2
shl edx, 3
mov eax, 0xffffffff
mov ecx, edx
shl eax, cl
mov ecx, dword [ebp - 0x10]
mov edi, dword [ecx + 8]
mov ecx, dword [ecx + 0xc]
and edi, eax
mov dword [ebp - 0x1c], ecx
mov ecx, edx
neg ecx
add ecx, 0x40
mov dword [ebp - 0x18], edi
cmp ecx, 0x1f
ja 0x61cab7
mov edi, esi
shrd edi, ebx, cl
mov dword [ebp - 0x20], edi
mov edi, ebx
shr edi, cl
mov dword [ebp - 0x24], edi
jmp 0x61cac5
mov edi, ebx
shr edi, cl
mov dword [ebp - 0x24], 0
mov dword [ebp - 0x20], edi
mov ecx, dword [ebp - 0x10]
mov dword [ebp - 0x14], ebx
mov ebx, dword [ebp - 0x18]
mov edi, dword [ebp - 0x1c]
or ebx, dword [ebp - 0x20]
or edi, dword [ebp - 0x24]
mov dword [ecx + 8], ebx
mov dword [ecx + 0xc], edi
mov ebx, dword [ebp - 0x14]
jmp 0x61cae9
xor edx, edx
mov eax, 0xffffffff
mov edi, dword [ebp - 0x10]
not eax
and eax, dword [edi]
cmp edx, 0x1f
ja 0x61cb01
mov ecx, edx
shld ebx, esi, cl
shl esi, cl
mov dword [ebp - 0x24], esi
jmp 0x61cb0e
mov ecx, edx
mov ebx, esi
mov dword [ebp - 0x24], 0
shl ebx, cl
mov edx, edi
or eax, dword [ebp - 0x24]
mov dword [edx], eax
mov dword [edx + 4], ebx
jmp 0x61cbad
mov eax, dword [ebp + 8]
push ebx
push dword [eax]
push dword [ebp + 0x14]
call fcn.0065d430
add esp, 0xc
jmp 0x61cbad
mov eax, dword [ebp + 8]
mov edx, dword [eax]
mov eax, edx
and eax, 0xfffffffe
and edx, 1
je 0x61cb51
shl edx, 3
mov ecx, edx
neg ecx
add ecx, 0x10
movzx edi, word [eax + 2]
shl edi, cl
jmp 0x61cb56
shl edx, 3
xor edi, edi
mov ecx, edx
movzx esi, word [eax]
shr esi, cl
mov edx, dword [ebp + 0x14]
or edi, esi
mov esi, edx
and esi, 0xfffffffe
and edx, 1
je 0x61cb96
shl edx, 3
mov eax, 0xffffffff
mov ecx, edx
shl eax, cl
neg ecx
movzx ebx, word [esi + 2]
add ecx, 0x10
mov dword [ebp - 0x24], eax
and ebx, eax
movzx eax, di
shr eax, cl
or ebx, eax
mov word [esi + 2], bx
mov eax, dword [ebp - 0x24]
jmp 0x61cb9d
xor edx, edx
mov eax, 0xffffffff
not eax
mov ecx, edx
movzx ebx, word [esi]
shl edi, cl
and ebx, eax
or ebx, edi
mov word [esi], bx
xor eax, eax
lea esp, [ebp - 0xc]
pop ebx
pop edi
pop esi
pop ebp
ret
lea eax, [ecx - 0x19]
cmp eax, 6
jbe 0x61cbd3
lea eax, [ecx - 0x32]
cmp eax, 2
jbe 0x61cbd3
lea eax, [ecx - 0x28]
cmp eax, 8
ja 0x61cd07
mov eax, dword [ebp + 0x10]
mov edx, dword [ecx*4 + 0x74a99c]
movsx esi, byte [eax + 0x190]
cmp edx, 0xffffffff
je 0x61cc16
mov edi, esi
lea ecx, [esi*4]
shl edi, 5
sub edi, ecx
mov eax, dword [ebp + 8]
mov edx, dword [edi + edx*4 + 0x74ab60]
mov eax, dword [eax]
test edx, edx
je 0x61cc23
push dword [ebp + 0x14]
push 0
push eax
call edx
add esp, 0xc
test eax, eax
je 0x61cc4c
mov eax, 0x5f
lea esp, [ebp - 0xc]
pop ebx
pop edi
pop esi
pop ebp
ret
mov ecx, dword [ebp + 0x14]
mov edx, dword [eax]
mov dword [ecx], edx
cmp ebx, 4
je 0x61cc4c
mov ecx, dword [ebp + 0x14]
mov edx, dword [eax + 4]
mov dword [ecx + 4], edx
cmp ebx, 8
je 0x61cc4c
mov ecx, dword [ebp + 0x14]
mov edx, dword [eax + 8]
mov dword [ecx + 8], edx
mov eax, dword [eax + 0xc]
mov dword [ecx + 0xc], eax
mov eax, dword [ebp + 0x10]
test byte [eax + 0x1a5], 0x20
je 0x61cd07
test esi, esi
je 0x61cc81
mov eax, dword [ebp + 8]
mov edx, dword [eax + 8]
add edx, 0xffffffce
test edx, 0xfffffffd
jne 0x61cd07
add esi, 0xfffffffd
cmp esi, 1
ja 0x61cd07
mov esi, ebx
shr esi, 0x1f
add esi, ebx
sar esi, 1
test esi, esi
jle 0x61cd07
mov edi, esi
shr edi, 1
je 0x61cd3a
mov eax, dword [ebp + 0x14]
xor edx, edx
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x24], esi
lea ecx, [eax + ebx]
xor eax, eax
mov esi, dword [ebp + 0x14]
movzx ebx, byte [eax + ecx - 1]
movzx edi, byte [esi + edx*2]
xor edi, ebx
mov byte [esi + edx*2], bl
mov ebx, edi
xor byte [eax + ecx - 1], bl
movzx ebx, byte [eax + ecx - 2]
movzx edi, byte [esi + edx*2 + 1]
xor edi, ebx
mov byte [esi + edx*2 + 1], bl
inc edx
mov ebx, edi
xor byte [eax + ecx - 2], bl
add eax, 0xfffffffe
cmp edx, dword [ebp - 0x20]
jb 0x61cca8
mov esi, dword [ebp - 0x24]
lea eax, [edx + edx + 1]
mov ebx, dword [ebp + 0xc]
lea edx, [eax - 1]
cmp edx, esi
jae 0x61cd07
mov esi, dword [ebp + 0x14]
movzx edx, byte [esi + eax - 1]
lea ecx, [ebx + esi]
sub ecx, eax
movzx ebx, byte [ecx]
xor edx, ebx
mov byte [esi + eax - 1], bl
xor byte [ecx], dl
xor eax, eax
lea esp, [ebp - 0xc]
pop ebx
pop edi
pop esi
pop ebp
ret
mov edi, 1
jmp 0x61c90c
movzx eax, byte [edx]
mov edx, dword [ebp + 0x14]
mov byte [edx], al
jmp 0x61cbad
mov esi, dword [ebp + 8]
mov edx, dword [ebp + 0x14]
mov edi, dword [esi]
movzx eax, byte [edi]
mov byte [edx], al
jmp 0x61cbad
mov eax, 1
jmp 0x61cce8