Function at 0x619530
Capabilities:
Encode data using xor

Disassembly:
push ebp
push edi
push esi
push ebx
sub esp, 0x3c
mov eax, dword [esp + 0x60]
mov ebx, dword [esp + 0x58]
mov edx, dword [esp + 0x64]
mov ebp, dword [esp + 0x54]
mov edi, dword [eax]
mov eax, dword [eax + 4]
mov dword [esp + 8], eax
lea eax, [ebx - 8]
mov dword [esp + 0x1c], eax
test edx, edx
je 0x619620
test eax, eax
js 0x619900
shr eax, 3
mov ebx, dword [esp + 0x50]
lea ecx, [eax*8 + 8]
mov edx, eax
lea eax, [esp + 0x30]
mov dword [esp + 0xc], eax
lea esi, [ebp + ecx]
mov dword [esp + 0x10], edx
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 8]
nop
mov eax, dword [ebx + 4]
mov edx, dword [ebx]
add ebp, 8
add ebx, 8
xor eax, ecx
xor edx, edi
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x30], edx
mov dword [esp + 4], eax
mov eax, dword [esp + 0xc]
mov dword [esp], eax
call fcn.006192a0
movq xmm0, qword [esp + 0x30]
mov edi, dword [esp + 0x30]
mov ecx, dword [esp + 0x34]
movq qword [ebp - 8], xmm0
cmp ebp, esi
jne 0x619590
mov edx, dword [esp + 0x10]
mov eax, dword [esp + 0x58]
mov dword [esp + 8], ecx
mov ecx, dword [esp + 0x14]
add dword [esp + 0x50], ecx
neg edx
shl edx, 3
lea ecx, [eax + edx - 0x10]
mov eax, dword [esp + 0x1c]
add eax, edx
mov dword [esp + 0x58], eax
cmp ecx, 0xfffffff8
je 0x6197c8
mov eax, dword [esp + 0x50]
cmp dword [esp + 0x58], 7
lea eax, [eax + ecx + 8]
ja case.0x619619.0
mov ecx, dword [esp + 0x58]
jmp dword [ecx*4 + 0x6d1520]
cmp dword [esp + 0x58], 7
jle 0x6198f0
mov esi, eax
mov dword [esp + 0x10], edi
mov edi, ebp
shr esi, 3
lea eax, [esi*8 + 8]
mov dword [esp + 0x20], esi
lea ecx, [ebp + eax]
mov dword [esp + 0x24], eax
mov dword [esp + 0x18], ecx
mov ecx, dword [esp + 0x50]
mov dword [esp + 0x14], ecx
lea ecx, [esp + 0x30]
mov dword [esp + 0xc], ecx
lea esi, [esi]
mov eax, dword [esp + 0x14]
mov ebp, dword [esp + 0x10]
add edi, 8
mov esi, dword [eax]
mov ebx, dword [eax + 4]
add eax, 8
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x10], esi
mov dword [esp + 4], eax
mov eax, dword [esp + 0xc]
mov dword [esp + 0x30], esi
mov esi, dword [esp + 8]
mov dword [esp], eax
mov dword [esp + 8], ebx
mov dword [esp + 0x34], ebx
call fcn.006193d0
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x34]
xor eax, ebp
xor ecx, esi
mov edx, eax
mov esi, eax
mov ebx, ecx
shr esi, 0x10
shr edx, 0x18
mov ebp, edx
mov edx, esi
shr ebx, 0x10
movzx esi, dl
mov edx, ebp
movzx ebp, al
movzx ebx, bl
shl edx, 8
or edx, esi
movzx esi, ah
mov eax, ecx
shr eax, 0x18
shl edx, 8
shl eax, 8
or edx, esi
movzx esi, cl
or eax, ebx
movzx ebx, ch
shl edx, 8
shl eax, 8
or edx, ebp
or eax, ebx
mov dword [edi - 8], edx
shl eax, 8
or eax, esi
mov dword [edi - 4], eax
mov eax, dword [esp + 0x18]
cmp edi, eax
jne 0x619660
mov esi, dword [esp + 0x20]
mov eax, dword [esp + 0x24]
add dword [esp + 0x50], eax
mov edi, dword [esp + 0x10]
mov eax, esi
neg eax
lea edx, [eax*8]
mov eax, dword [esp + 0x58]
lea ebx, [eax + edx - 0x10]
mov eax, dword [esp + 0x1c]
add eax, edx
mov dword [esp + 0x58], eax
cmp ebx, 0xfffffff8
je 0x6197c8
mov eax, dword [esp + 0x50]
mov esi, dword [eax]
mov ebp, dword [eax + 4]
mov eax, dword [esp + 0x5c]
mov dword [esp + 0x30], esi
mov dword [esp + 4], eax
lea eax, [esp + 0x30]
mov dword [esp], eax
mov dword [esp + 0x34], ebp
call fcn.006193d0
mov eax, dword [esp + 0x30]
mov edx, dword [esp + 8]
xor edx, dword [esp + 0x34]
xor eax, edi
mov edi, dword [esp + 0x18]
cmp dword [esp + 0x58], 7
lea ecx, [edi + ebx + 8]
ja case.0x619783.0
mov edi, dword [esp + 0x58]
jmp dword [edi*4 + 0x6d1540]
mov ebx, edx
sub ecx, 1
shr ebx, 0x10
mov byte [ecx], bl
mov byte [ecx - 1], dh
sub ecx, 1
mov byte [ecx - 1], dl
lea ebx, [ecx - 1]
mov edx, eax
lea ecx, [ebx - 1]
shr edx, 0x18
mov byte [ebx - 1], dl
mov ebx, eax
lea edx, [ecx - 1]
shr ebx, 0x10
mov byte [ecx - 1], bl
mov byte [edx - 1], ah
lea ecx, [edx - 1]
mov byte [ecx - 1], al
mov dword [esp + 8], ebp
mov edi, esi
lea esi, [esi]
mov eax, edi
mov ecx, edi
mov byte [esp + 0xc], al
mov eax, edi
shr edi, 0x18
movzx ebx, ah
mov eax, edi
mov edi, dword [esp + 8]
shr ecx, 0x10
mov edx, edi
mov byte [esp + 8], dl
mov edx, edi
mov esi, edx
movzx edi, dh
shr edx, 0x10
shr esi, 0x18
mov ebp, esi
movzx eax, al
movzx ecx, cl
movzx ebx, bl
shl eax, 8
or eax, ecx
movzx ecx, byte [esp + 0xc]
shl eax, 8
or eax, ebx
mov ebx, ebp
movzx ebp, bl
movzx ebx, dl
shl eax, 8
mov edx, ebp
or eax, ecx
shl edx, 8
mov esi, eax
mov eax, dword [esp + 0x60]
or edx, ebx
mov ebx, edi
movzx edi, bl
shl edx, 8
movzx ebx, byte [esp + 8]
mov dword [eax], esi
or edx, edi
shl edx, 8
or edx, ebx
mov dword [eax + 4], edx
add esp, 0x3c
pop ebx
pop esi
pop edi
pop ebp
ret
xor ecx, ecx
movzx edx, byte [eax - 1]
sub eax, 1
shl edx, 8
or edx, ecx
lea ecx, [eax - 1]
movzx eax, byte [eax - 1]
or eax, edx
xor dword [esp + 8], eax
movzx ebx, byte [ecx - 1]
lea eax, [ecx - 1]
shl ebx, 0x18
movzx ecx, byte [eax - 1]
lea edx, [eax - 1]
shl ecx, 0x10
or ecx, ebx
lea eax, [edx - 1]
movzx edx, byte [edx - 1]
shl edx, 8
or ecx, edx
movzx edx, byte [eax - 1]
or edx, ecx
xor edi, edx
mov eax, dword [esp + 8]
mov dword [esp + 0x30], edi
mov dword [esp + 0x34], eax
mov eax, dword [esp + 0x5c]
mov dword [esp + 4], eax
lea eax, [esp + 0x30]
mov dword [esp], eax
call fcn.006192a0
mov ebp, dword [esp + 0x34]
mov eax, dword [esp + 0x30]
movq xmm1, qword [esp + 0x30]
mov edx, ebp
mov ecx, eax
mov byte [esp + 0xc], al
movzx ebx, ah
mov byte [esp + 8], dl
shr ecx, 0x10
mov edx, ebp
shr eax, 0x18
movzx edi, dh
shr ebp, 0x18
movq qword [esi], xmm1
shr edx, 0x10
jmp 0x6197f6
mov dword [esp + 0x18], ebp
mov ebx, eax
jmp 0x619734
mov ecx, eax
mov esi, ebp
jmp 0x6195f9
xor ecx, ecx
jmp 0x61988d
mov edx, eax
xor ecx, ecx
jmp 0x619881
xor ebx, ebx
jmp 0x619875
mov ecx, eax
jmp 0x61986b
xor edx, edx
jmp 0x61985e
movzx ecx, byte [eax - 1]
sub eax, 1
shl ecx, 0x10
jmp 0x619852
mov ebx, ecx
jmp 0x6197a0
mov edx, ecx
jmp 0x6197b6