Function at 0x10005ad0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x18
mov edi, dword [ebp + 0xc]
call 0x10005971
pop eax
mov dword [ebp - 0x24], edx
mov dword [ebp - 0x10], ecx
mov dword [ebp - 0x20], eax
test edi, edi
je 0x10005a54
xor esi, esi
jmp 0x100059a0
mov eax, edi
sub eax, esi
jb 0x10005a86
mov ecx, dword [ebp + 8]
add ecx, esi
push eax
push ecx
push dword [ebp - 0x24]
lea eax, [ebp - 0x1c]
push eax
call sym.std::sys::pal::windows::fs::File::read::h97fbbc1e5ae09eb1
add esp, 0x10
movzx eax, byte [ebp - 0x1c]
cmp eax, 4
jne 0x100059e0
mov eax, dword [ebp - 0x18]
test eax, eax
je 0x10005a6a
add esi, eax
cmp esi, edi
jne 0x100059a0
jmp 0x10005a54
mov eax, dword [eax*4 + 0x10005ac0]
add eax, dword [ebp - 0x20]
jmp eax
mov eax, dword [ebp - 0x10]
mov byte [eax], 4
jmp 0x10005a7e
push 0x1b
push str.Could_not_read_enough_bytes
push 0x27
push dword [ebp - 0x10]
call sym.std::io::error::Error::new::h5198a69da7351047
add esp, 0x10
add esp, 0x18
pop esi
pop edi
pop ebx
pop ebp
ret
push 0x10127bb8
push edi
push esi
call sym.core::slice::index::slice_start_index_len_fail::h7e8587be95abf61b
mov esi, eax
mov eax, dword [edi + 4]
mov ecx, dword [ebp - 0x14]
test eax, eax
je 0x10005aab
push dword [edi + 8]
push eax
push ecx
call sym.___rust_dealloc
add esp, 0xc
push 4
push 0xc
push ebx
call sym.___rust_dealloc
add esp, 0xc
push esi
call sym.__Unwind_Resume
nop
jmp 0x10005ac2
add byte [eax], al
jnp 0x10005ac6
add byte [eax], al
push ss
add byte [eax], al
add byte [ebp + 0x55000000], dl
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x18
mov edi, dword [ebp + 8]
mov dword [ebp - 0x14], ecx
add dword [ecx + 0x38], edi
mov eax, dword [ecx + 0x3c]
test eax, eax
je 0x10005b27
mov esi, 8
mov dword [ebp - 0x18], eax
mov dword [ebp - 0x20], edx
sub esi, eax
cmp edi, esi
mov eax, esi
cmovb eax, edi
mov edi, eax
cmp eax, 4
jb 0x10005b2e
mov eax, dword [edx]
xor ecx, ecx
mov edx, 4
mov dword [ebp - 0x10], eax
mov eax, edx
or eax, 1
cmp eax, edi
jb 0x10005b42
mov eax, dword [ebp - 0x10]
cmp edx, edi
jb 0x10005b7f
mov ebx, ecx
jmp 0x10005bad
xor esi, esi
jmp 0x10005cc9
mov dword [ebp - 0x10], 0
xor ecx, ecx
xor edx, edx
mov eax, edx
or eax, 1
cmp eax, edi
jae 0x10005b19
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x1c], ecx
lea ecx, [edx*8]
xor ebx, ebx
movzx eax, word [eax + edx]
shld ebx, eax, cl
shl eax, cl
test cl, 0x20
mov ecx, dword [ebp - 0x1c]
cmovne ebx, eax
mov dword [ebp - 0x24], ebx
mov ebx, 0
cmovne eax, ebx
mov ebx, dword [ebp - 0x10]
or edx, 2
or ecx, dword [ebp - 0x24]
or ebx, eax
mov eax, ebx
cmp edx, edi
jae 0x10005b20
mov dword [ebp - 0x10], eax
mov eax, dword [ebp - 0x20]
xor edi, edi
mov ebx, ecx
movzx eax, byte [eax + edx]
shl edx, 3
mov ecx, edx
shld edi, eax, cl
shl eax, cl
test dl, 0x20
mov ecx, 0
cmovne edi, eax
cmovne eax, ecx
or dword [ebp - 0x10], eax
or ebx, edi
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp - 0x18]
xor edi, edi
lea ecx, [edx*8]
shld ebx, eax, cl
shl eax, cl
test cl, 0x20
cmovne ebx, eax
cmove edi, eax
mov eax, dword [ebp - 0x14]
or edi, dword [eax + 0x30]
or ebx, dword [eax + 0x34]
mov dword [ebp - 0x10], edi
mov dword [eax + 0x30], edi
mov edi, dword [ebp + 8]
mov dword [eax + 0x34], ebx
cmp esi, edi
jbe 0x10005be9
add edx, edi
mov edi, edx
jmp 0x10005e89
mov eax, dword [eax + 0x1c]
mov ecx, dword [ebp - 0x14]
mov edx, ebx
xor eax, ebx
mov ecx, dword [ecx + 0x18]
mov ebx, dword [ebp - 0x10]
movd xmm2, eax
mov eax, dword [ebp - 0x14]
xor ecx, ebx
movdqu xmm1, xmmword [eax]
mov eax, dword [ebp - 0x14]
movd xmm0, ecx
punpcklqdq xmm2, xmm0
movdqu xmm0, xmmword [eax + 0x10]
mov eax, dword [ebp - 0x14]
movdqa xmm3, xmm0
movdqa xmm4, xmm0
psllq xmm0, 0xd
shufps xmm3, xmm2, 0x24
psrlq xmm4, 0x33
movaps xmm2, xmm3
paddq xmm1, xmm3
psllq xmm3, 0x10
psrlq xmm2, 0x30
shufps xmm0, xmm3, 0xe4
shufps xmm4, xmm2, 0xe4
orps xmm0, xmm4
pxor xmm0, xmm1
pshufd xmm1, xmm1, 0x1e
movdqa xmm2, xmm0
movdqa xmm3, xmm0
paddq xmm1, xmm0
psrlq xmm2, 0x2f
psrlq xmm3, 0x2b
movsd xmm3, xmm2
movdqa xmm2, xmm0
psllq xmm0, 0x15
psllq xmm2, 0x11
movsd xmm0, xmm2
pshufd xmm2, xmm1, 0xff
orpd xmm0, xmm3
xorpd xmm0, xmm1
movupd xmmword [eax + 0x10], xmm0
mov eax, dword [ebp - 0x14]
pshufd xmm0, xmm1, 0x55
movd dword [eax + 0xc], xmm1
mov eax, dword [ebp - 0x14]
pshufd xmm1, xmm1, 0xee
movd ecx, xmm1
xor ecx, ebx
movd dword [eax + 8], xmm0
movd eax, xmm2
xor eax, edx
mov edx, dword [ebp - 0x14]
mov dword [edx + 4], eax
mov edx, dword [ebp - 0x14]
mov dword [edx], ecx
mov ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x20]
sub edi, esi
mov eax, edi
and edi, 0xfffffff8
and eax, 7
cmp esi, edi
mov dword [ebp - 0x18], eax
jae 0x10005ddd
movdqu xmm1, xmmword [ecx]
movdqu xmm0, xmmword [ecx + 0x10]
nop word [eax + eax]
mov ecx, dword [edx + esi]
mov eax, dword [edx + esi + 4]
pshufd xmm2, xmm0, 0xee
movdqa xmm4, xmm0
add esi, 8
movd ebx, xmm2
pshufd xmm2, xmm0, 0xff
psrlq xmm4, 0x33
xor ebx, ecx
movd xmm3, ebx
movd ebx, xmm2
xor ebx, eax
movd xmm2, ebx
punpcklqdq xmm2, xmm3
movdqa xmm3, xmm0
psllq xmm0, 0xd
shufps xmm3, xmm2, 0x24
movaps xmm2, xmm3
paddq xmm1, xmm3
psllq xmm3, 0x10
psrlq xmm2, 0x30
shufps xmm0, xmm3, 0xe4
shufps xmm4, xmm2, 0xe4
pshufd xmm2, xmm1, 0x1e
orps xmm0, xmm4
pxor xmm0, xmm1
paddq xmm2, xmm0
pshufd xmm3, xmm2, 0xee
pshufd xmm1, xmm2, 0xff
movd ebx, xmm3
movdqa xmm3, xmm0
xor ebx, ecx
movd ecx, xmm1
movdqa xmm1, xmm0
psrlq xmm3, 0x2b
psrlq xmm1, 0x2f
xor ecx, eax
cmp esi, edi
movsd xmm3, xmm1
movdqa xmm1, xmm0
psllq xmm0, 0x15
psllq xmm1, 0x11
movsd xmm0, xmm1
movd xmm1, ecx
orpd xmm0, xmm3
movd xmm3, ebx
punpcklqdq xmm1, xmm3
xorpd xmm0, xmm2
shufps xmm1, xmm2, 0x12
jb 0x10005cf0
mov eax, dword [ebp - 0x14]
pshufd xmm1, xmm2, 0x55
movd dword [ebp - 0x10], xmm2
movd edi, xmm1
movdqu xmmword [eax + 0x10], xmm0
mov dword [eax + 8], edi
mov edi, dword [ebp - 0x10]
mov dword [eax + 0xc], edi
mov dword [eax], ebx
mov dword [eax + 4], ecx
mov edi, dword [ebp - 0x18]
cmp edi, 4
jb 0x10005dff
mov ecx, dword [edx + esi]
mov ebx, 4
mov dword [ebp - 0x10], 0
mov eax, ebx
or eax, 1
cmp eax, edi
jb 0x10005e13
jmp 0x10005e47
xor ecx, ecx
mov dword [ebp - 0x10], 0
xor ebx, ebx
mov eax, ebx
or eax, 1
cmp eax, edi
jae 0x10005e47
lea eax, [edx + ebx]
mov dword [ebp - 0x1c], ecx
lea ecx, [ebx*8]
xor edi, edi
movzx eax, word [esi + eax]
shld edi, eax, cl
shl eax, cl
test cl, 0x20
mov ecx, 0
cmovne edi, eax
cmovne eax, ecx
mov ecx, dword [ebp - 0x1c]
or ebx, 2
or dword [ebp - 0x10], edi
mov edi, dword [ebp - 0x18]
or ecx, eax
cmp ebx, edi
jae 0x10005e7d
add esi, ebx
shl ebx, 3
mov eax, ecx
movzx edx, byte [edx + esi]
xor esi, esi
mov ecx, ebx
shld esi, edx, cl
shl edx, cl
mov ecx, eax
test bl, 0x20
mov eax, 0
cmovne esi, edx
cmovne edx, eax
mov eax, dword [ebp - 0x10]
or ecx, edx
or eax, esi
mov esi, eax
mov eax, dword [ebp - 0x14]
jmp 0x10005e83
mov eax, dword [ebp - 0x14]
mov esi, dword [ebp - 0x10]
mov dword [eax + 0x30], ecx
mov dword [eax + 0x34], esi
mov dword [eax + 0x3c], edi
add esp, 0x18
pop esi
pop edi
pop ebx
pop ebp
ret