Function at 0x6508f0
Capabilities:
Encode data using xor

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff0
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
sub esp, 0x348
mov eax, dword [0xa470b0]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebx + 0xc]
mov ecx, dword [ebx + 8]
mov dword [ebp - 0x300], eax
mov eax, dword [ebx + 0x10]
mov dword [ebp - 0x2f8], eax
mov eax, dword [ebx + 0x14]
push esi
mov dword [ebp - 0x2f4], eax
mov esi, 0x40
mov eax, dword [ebx + 0x18]
push edi
mov dword [ebp - 0x2ec], eax
mov edi, 8
mov eax, dword [ebx + 0x24]
push ecx
mov dword [ebp - 0x304], ecx
mov dword [ebp - 0x2d0], eax
mov dword [ebp - 0x2dc], esi
mov dword [ebp - 0x2cc], edi
call fcn.00613e10
add esp, 4
sub eax, esi
je 0x650a04
sub eax, 0x260
je 0x6509dd
dec eax
je 0x6509a0
mov ecx, dword [ebp - 0x2f8]
xor eax, eax
mov dword [ecx], 0
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00654228
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
lea eax, [ebp - 0x2b0]
push eax
call fcn.0062e830
mov esi, 0x80
mov dword [ebp - 0x2e8], 0x651280
mov edi, 0x10
mov dword [ebp - 0x2c0], 0x62ef30
mov ecx, 0x30
mov dword [ebp - 0x2dc], esi
mov dword [ebp - 0x2cc], edi
jmp 0x650a29
lea eax, [ebp - 0x2b0]
push eax
call fcn.0062d720
mov dword [ebp - 0x2e8], 0x651180
mov ecx, 0x20
mov dword [ebp - 0x2c0], 0x62d780
jmp 0x650a29
lea eax, [ebp - 0x2b0]
push eax
call fcn.0062bf00
mov dword [ebp - 0x2e8], 0x6510e0
mov ecx, 0x14
mov dword [ebp - 0x2c0], 0x62bf40
mov edx, dword [ebx + 0x20]
mov eax, edi
sub eax, ecx
mov dword [ebp - 0x2d8], ecx
add eax, esi
add edx, 0xc
add eax, edx
xor edi, edi
xor edx, edx
mov dword [ebp - 0x2d4], edi
div esi
xor edx, edx
mov dword [ebp - 0x2c4], edi
mov dword [ebp - 0x2b8], eax
add esp, 4
mov eax, dword [ebx + 0x1c]
sub eax, ecx
add eax, 0xd
mov dword [ebx + 0x1c], eax
div esi
mov ecx, dword [ebx + 0x1c]
mov dword [ebp - 0x314], eax
mov eax, dword [ebp - 0x2cc]
mov dword [ebp - 0x2f0], edx
add eax, ecx
xor edx, edx
div esi
mov dword [ebp - 0x30c], eax
mov eax, dword [ebp - 0x2b8]
cmp eax, 6
jbe 0x650aa5
lea edi, [eax - 6]
mov dword [ebp - 0x2d4], edi
imul edi, esi
mov dword [ebp - 0x2c4], edi
lea eax, [ecx + esi]
shl eax, 3
push esi
mov dword [ebp - 0x2b8], eax
lea eax, [ebp - 0xd8]
push 0
push eax
call fcn.00655430
push dword [ebx + 0x28]
lea eax, [ebp - 0xd8]
push dword [ebp - 0x2d0]
push eax
call fcn.00654750
add esp, 0x18
xor ecx, ecx
test esi, esi
je 0x650b2d
cmp esi, 0x10
jb 0x650b17
movdqa xmm1, xmmword [0x9dd750]
mov eax, esi
and eax, 0xf
mov edx, esi
sub edx, eax
lea eax, [ebp - 0xd8]
lea ebx, [ebx]
movdqu xmm0, xmmword [eax]
add ecx, 0x10
lea eax, [eax + 0x10]
pxor xmm0, xmm1
movdqu xmmword [eax - 0x10], xmm0
cmp ecx, edx
jb 0x650b00
cmp ecx, esi
jae 0x650b2d
jmp 0x650b20
xor byte [ebp + ecx - 0xd8], 0x36
inc ecx
cmp ecx, esi
jb 0x650b20
lea eax, [ebp - 0xd8]
push eax
lea eax, [ebp - 0x2b0]
push eax
call dword [ebp - 0x2c0]
mov eax, dword [ebp - 0x2cc]
add eax, 0xfffffffc
push eax
lea eax, [ebp - 0x14]
push 0
push eax
call fcn.00655430
mov ecx, dword [ebp - 0x2b8]
add esp, 0x14
mov edx, dword [ebp - 0x2cc]
mov eax, ecx
shr eax, 0x18
mov byte [ebp + edx - 0x18], al
mov eax, ecx
shr eax, 0x10
mov byte [ebp + edx - 0x17], al
mov eax, ecx
shr eax, 8
mov byte [ebp + edx - 0x16], al
mov byte [ebp + edx - 0x15], cl
test edi, edi
je 0x650c21
mov ecx, dword [ebp - 0x2f4]
mov eax, dword [ecx + 8]
movq xmm0, qword [ecx]
mov dword [ebp - 0x150], eax
mov al, byte [ecx + 0xc]
mov byte [ebp - 0x14c], al
lea eax, [esi - 0xd]
push eax
push dword [ebp - 0x2ec]
lea eax, [ebp - 0x14b]
movq qword [ebp - 0x158], xmm0
push eax
call fcn.00654750
lea eax, [ebp - 0x158]
push eax
lea eax, [ebp - 0x2b0]
push eax
call dword [ebp - 0x2c0]
xor edx, edx
mov eax, edi
div esi
add esp, 0x14
cmp eax, 1
jbe 0x650c21
mov edi, dword [ebp - 0x2ec]
add edi, 0xfffffff3
add edi, esi
dec eax
mov dword [ebp - 0x2bc], eax
lea ebx, [ebx]
lea eax, [ebp - 0x2b0]
push edi
push eax
call dword [ebp - 0x2c0]
add esp, 8
add edi, esi
dec dword [ebp - 0x2bc]
jne 0x650c00
mov edi, dword [ebp - 0x2c4]
push 0x40
lea eax, [ebp - 0x58]
push 0
push eax
call fcn.00655430
mov edx, dword [ebp - 0x2d4]
add esp, 0xc
lea eax, [edx + 6]
mov dword [ebp - 0x310], eax
cmp edx, eax
ja 0x650ed1
jmp 0x650c50
mov eax, edx
xor esi, esi
xor eax, dword [ebp - 0x314]
lea ecx, [eax - 1]
not eax
sar eax, 0x1f
sar ecx, 0x1f
and cl, al
mov eax, edx
xor eax, dword [ebp - 0x30c]
mov dword [ebp - 0x2b8], ecx
mov ecx, dword [ebp - 0x2dc]
lea edx, [eax - 1]
not eax
sar edx, 0x1f
sar eax, 0x1f
and dl, al
movsx eax, dl
mov dword [ebp - 0x2bc], edx
movd xmm0, eax
punpcklbw xmm0, xmm0
punpcklwd xmm0, xmm0
pshufd xmm0, xmm0, 0
movdqa xmmword [ebp - 0x340], xmm0
test ecx, ecx
je 0x650e1a
mov edx, dword [ebp - 0x2f0]
lea eax, [edx + 1]
mov dword [ebp - 0x2d0], eax
mov eax, edx
sar eax, 0x1f
mov dword [ebp - 0x308], eax
mov eax, dword [ebp - 0x2b8]
movzx edx, al
mov dword [ebp - 0x2fc], edx
mov edx, dword [ebp - 0x2d0]
mov dword [ebp - 0x2e0], edx
mov edx, dword [ebp - 0x2bc]
sar dword [ebp - 0x2e0], 0x1f
not dl
or dl, al
mov eax, ecx
sub eax, dword [ebp - 0x2cc]
mov dword [ebp - 0x31c], eax
mov eax, dword [ebp - 0x2f0]
neg eax
mov byte [ebp - 0x2b2], dl
mov dword [ebp - 0x2e4], eax
mov eax, dword [ebp - 0x2cc]
sub eax, ecx
lea eax, [ebp + eax - 0x14]
mov dword [ebp - 0x2c4], eax
lea esp, [esp]
mov byte [ebp - 0x2b1], 0
cmp edi, 0xd
jae 0x650d47
mov eax, dword [ebp - 0x2f4]
mov al, byte [eax + edi]
jmp 0x650d5b
mov eax, dword [ebx + 0x20]
add eax, 0xd
cmp edi, eax
jae 0x650d61
mov eax, dword [ebp - 0x2ec]
mov al, byte [eax + edi - 0xd]
mov byte [ebp - 0x2b1], al
mov ecx, dword [ebp - 0x2e4]
mov edx, esi
mov al, byte [ebp - 0x308]
inc edi
sar edx, 0x1f
xor al, dl
sar ecx, 0x1f
xor cl, dl
or cl, al
mov eax, esi
sub eax, dword [ebp - 0x2d0]
xor cl, dl
sar eax, 0x1f
not cl
xor al, dl
movzx ecx, cl
and ecx, dword [ebp - 0x2fc]
mov dword [ebp - 0x2c8], eax
mov al, dl
xor al, byte [ebp - 0x2e0]
or byte [ebp - 0x2c8], al
mov al, cl
xor byte [ebp - 0x2c8], dl
not al
mov edx, dword [ebp - 0x2c8]
and cl, 0x80
and al, byte [ebp - 0x2b1]
not dl
and dl, byte [ebp - 0x2b8]
or al, cl
not dl
and dl, al
and dl, byte [ebp - 0x2b2]
cmp esi, dword [ebp - 0x31c]
jb 0x650dfa
mov eax, dword [ebp - 0x2bc]
movzx ecx, al
mov al, cl
not al
and al, dl
mov edx, dword [ebp - 0x2c4]
and cl, byte [edx]
or al, cl
mov dl, al
inc dword [ebp - 0x2e4]
inc dword [ebp - 0x2c4]
mov byte [ebp + esi - 0x1d8], dl
inc esi
cmp esi, dword [ebp - 0x2dc]
jb 0x650d30
lea eax, [ebp - 0x1d8]
push eax
lea eax, [ebp - 0x2b0]
push eax
call dword [ebp - 0x2c0]
lea eax, [ebp - 0x1d8]
push eax
lea eax, [ebp - 0x2b0]
push eax
call dword [ebp - 0x2e8]
mov esi, dword [ebp - 0x2d8]
add esp, 0x10
xor eax, eax
test esi, esi
je 0x650eb2
cmp esi, 0x10
jb 0x650e94
movdqa xmm2, xmmword [ebp - 0x340]
mov ecx, esi
and ecx, 0xf
mov edx, esi
sub edx, ecx
jmp 0x650e70
movdqu xmm1, xmmword [ebp + eax - 0x1d8]
movdqu xmm0, xmmword [ebp + eax - 0x58]
pand xmm1, xmm2
por xmm1, xmm0
movdqu xmmword [ebp + eax - 0x58], xmm1
add eax, 0x10
cmp eax, edx
jb 0x650e70
cmp eax, esi
jae 0x650eb2
mov edx, dword [ebp - 0x2bc]
mov edi, edi
mov cl, byte [ebp + eax - 0x1d8]
and cl, dl
or byte [ebp + eax - 0x58], cl
inc eax
cmp eax, esi
jb 0x650ea0
mov edx, dword [ebp - 0x2d4]
inc edx
mov dword [ebp - 0x2d4], edx
cmp edx, dword [ebp - 0x310]
jbe 0x650c50
mov esi, dword [ebp - 0x2dc]
lea eax, [ebp - 0x32c]
push eax
call fcn.00606990
push 0
push dword [ebp - 0x304]
lea eax, [ebp - 0x32c]
push eax
call fcn.00606730
add esp, 0x10
test eax, eax
jne 0x650f1c
lea eax, [ebp - 0x32c]
push eax
call fcn.006067d0
add esp, 4
xor eax, eax
pop edi
pop esi
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.00654228
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret
xor ecx, ecx
test esi, esi
je 0x650f6d
cmp esi, 0x10
jb 0x650f57
movdqa xmm1, xmmword [0x9dd760]
mov eax, esi
and eax, 0xf
mov edx, esi
sub edx, eax
lea eax, [ebp - 0xd8]
mov edi, edi
movdqu xmm0, xmmword [eax]
add ecx, 0x10
lea eax, [eax + 0x10]
pxor xmm0, xmm1
movdqu xmmword [eax - 0x10], xmm0
cmp ecx, edx
jb 0x650f40
cmp ecx, esi
jae 0x650f6d
jmp 0x650f60
xor byte [ebp + ecx - 0xd8], 0x6a
inc ecx
cmp ecx, esi
jb 0x650f60
push esi
lea eax, [ebp - 0xd8]
push eax
lea eax, [ebp - 0x32c]
push eax
call fcn.006067b0
push dword [ebp - 0x2d8]
lea eax, [ebp - 0x58]
push eax
lea eax, [ebp - 0x32c]
push eax
call fcn.006067b0
lea eax, [ebp - 0x318]
push eax
push dword [ebp - 0x300]
lea eax, [ebp - 0x32c]
push eax
call fcn.00606670
mov ecx, dword [ebp - 0x2f8]
mov eax, dword [ebp - 0x318]
mov dword [ecx], eax
lea eax, [ebp - 0x32c]
push eax
call fcn.006067d0
mov ecx, dword [ebp - 4]
add esp, 0x28
xor ecx, ebp
mov eax, 1
pop edi
pop esi
call fcn.00654228
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret