Function at 0x5711c0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x5c
mov ebp, dword [esp + 0x8c]
mov esi, dword [esp + 0x88]
mov edi, dword [esp + 0x74]
test esi, esi
jne 0x5711e4
call sym.fastboot.exe_EVP_sha1
mov esi, eax
test ebp, ebp
cmove ebp, esi
push esi
call sym.fastboot.exe_EVP_MD_size
add esp, 4
lea ecx, [eax*2 + 2]
cmp ecx, edi
jbe 0x571208
push 0x62
push str.external_boringssl_src_crypto_rsa_extra_rsa_crypt.c
push 0x7e
jmp 0x571222
lea edx, [eax + eax]
mov ebx, edx
not ebx
lea ecx, [edi + ebx]
dec ecx
cmp ecx, dword [esp + 0x7c]
jae 0x57123a
push 0x68
push str.external_boringssl_src_crypto_rsa_extra_rsa_crypt.c
push 0x72
push 0
push 4
call sym.fastboot.exe_ERR_put_error
add esp, 0x14
xor esi, esi
mov eax, esi
add esp, 0x5c
pop esi
pop edi
pop ebx
pop ebp
ret
lea ecx, [edi - 1]
or edx, 1
mov dword [esp + 0xc], ecx
cmp ecx, edx
jae 0x57124c
push 0x6d
jmp 0x5711ff
mov edx, dword [esp + 0x84]
mov ecx, dword [esp + 0x70]
mov byte [ecx], 0
mov dword [esp + 4], eax
add eax, ecx
inc eax
push 0
push esi
push 0
mov dword [esp + 0x14], eax
push eax
push edx
push dword [esp + 0x94]
call sym.fastboot.exe_EVP_Digest
add esp, 0x18
test eax, eax
je 0x571517
mov esi, dword [esp + 0xc]
sub esi, dword [esp + 0x7c]
add ebx, esi
mov ecx, dword [esp + 4]
je 0x5712a9
mov eax, dword [esp + 8]
add eax, ecx
push ebx
push 0
push eax
mov ebx, ecx
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
mov ecx, ebx
add esp, 0xc
mov edx, dword [esp + 0x70]
lea ebx, [edx + 1]
mov eax, ecx
not eax
add esi, eax
mov eax, dword [esp + 8]
mov byte [eax + esi], 1
mov esi, dword [esp + 0x7c]
test esi, esi
je 0x5712e1
lea eax, [edx + ecx]
add edi, eax
sub edi, esi
sub edi, ecx
push esi
push dword [esp + 0x7c]
push edi
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
mov ecx, dword [esp + 0x10]
add esp, 0xc
push ecx
push ebx
mov edi, ecx
call sym.fastboot.exe_RAND_bytes
add esp, 8
test eax, eax
je 0x571517
mov dword [esp + 0x14], ebx
mov ebx, dword [esp + 0xc]
sub ebx, edi
push ebx
call sym.fastboot.exe_OPENSSL_malloc
add esp, 4
xor esi, esi
test eax, eax
je 0x57151d
push ebp
push edi
mov ecx, dword [esp + 0x1c]
push ecx
mov dword [esp + 0x1c], ebx
push ebx
mov dword [esp + 0x10], eax
push eax
call fcn.004fd210
add esp, 0x14
test eax, eax
je 0x57152e
cmp dword [esp + 0xc], edi
mov edi, dword [esp]
je 0x57145b
mov eax, dword [esp + 0x10]
cmp eax, 1
adc eax, 0
xor ecx, ecx
cmp eax, 8
jb 0x5713f0
lea edx, [edi + eax]
cmp dword [esp + 8], edx
jae 0x571372
mov edx, dword [esp + 4]
add edx, eax
mov edi, dword [esp + 0x70]
add edx, edi
inc edx
mov edi, dword [esp]
cmp edi, edx
jb 0x5713f0
xor ecx, ecx
cmp eax, 0x20
jb 0x5713c5
mov ecx, eax
and ecx, 0xffffffe0
mov edx, dword [esp + 4]
mov ebx, edi
mov edi, dword [esp + 0x70]
add edx, edi
add edx, 0x11
xor edi, edi
movups xmm0, xmmword [ebx + edi]
movups xmm1, xmmword [ebx + edi + 0x10]
movups xmm2, xmmword [edx + edi - 0x10]
xorps xmm2, xmm0
movups xmm0, xmmword [edx + edi]
xorps xmm0, xmm1
movups xmmword [edx + edi - 0x10], xmm2
movups xmmword [edx + edi], xmm0
add edi, 0x20
cmp ecx, edi
jne 0x57138f
cmp eax, ecx
je 0x57145b
mov edi, ebx
test al, 0x18
je 0x5713f0
mov edx, ecx
mov ebx, eax
mov ecx, eax
and ecx, 0xfffffff8
mov eax, dword [esp + 8]
movsd xmm0, qword [edi + edx]
movsd xmm1, qword [eax + edx]
xorps xmm1, xmm0
movlps qword [eax + edx], xmm1
add edx, 8
cmp ecx, edx
jne 0x5713d2
mov eax, ebx
cmp ebx, ecx
je 0x57145b
mov edx, ecx
not edx
add edx, eax
mov dword [esp + 0x18], edx
mov dword [esp + 0xc], eax
mov edi, eax
and edi, 3
je 0x571417
mov edx, dword [esp]
mov eax, dword [esp + 8]
movzx ebx, byte [edx + ecx]
xor byte [eax + ecx], bl
inc ecx
dec edi
jne 0x57140c
cmp dword [esp + 0x18], 3
mov eax, dword [esp + 0xc]
jb 0x57145b
mov edx, dword [esp + 4]
mov edi, dword [esp + 0x70]
add edx, edi
add edx, 4
mov edi, dword [esp]
movzx ebx, byte [edi + ecx]
xor byte [edx + ecx - 3], bl
movzx ebx, byte [edi + ecx + 1]
xor byte [edx + ecx - 2], bl
movzx ebx, byte [edi + ecx + 2]
xor byte [edx + ecx - 1], bl
movzx ebx, byte [edi + ecx + 3]
xor byte [edx + ecx], bl
add ecx, 4
cmp eax, ecx
jne 0x571432
xorps xmm0, xmm0
movups xmmword [esp + 0x4c], xmm0
movups xmmword [esp + 0x3c], xmm0
movups xmmword [esp + 0x2c], xmm0
movups xmmword [esp + 0x1c], xmm0
lea eax, [esp + 0x1c]
push ebp
push dword [esp + 0x14]
push dword [esp + 0x10]
mov edi, dword [esp + 0x10]
push edi
push eax
call fcn.004fd210
add esp, 0x14
test eax, eax
je 0x57152e
mov esi, 1
test edi, edi
je 0x57152e
mov edx, edi
xor eax, eax
cmp edi, 8
mov edi, dword [esp + 0x14]
jb 0x571521
xor eax, eax
cmp edx, 0x20
jb 0x5714f5
mov eax, edx
and eax, 0xffffffe0
xor ecx, ecx
mov ebx, dword [esp + 0x70]
movups xmm0, xmmword [esp + ecx + 0x1c]
movups xmm1, xmmword [esp + ecx + 0x2c]
movups xmm2, xmmword [ebx + ecx + 1]
xorps xmm2, xmm0
movups xmm0, xmmword [ebx + ecx + 0x11]
xorps xmm0, xmm1
movups xmmword [ebx + ecx + 1], xmm2
movups xmmword [ebx + ecx + 0x11], xmm0
add ecx, 0x20
cmp eax, ecx
jne 0x5714c1
cmp edx, eax
je 0x57152e
test dl, 0x18
je 0x571521
mov ecx, eax
mov eax, edx
and eax, 0xfffffff8
movsd xmm0, qword [esp + ecx + 0x1c]
movsd xmm1, qword [edi + ecx]
xorps xmm1, xmm0
movlps qword [edi + ecx], xmm1
add ecx, 8
cmp eax, ecx
jne 0x5714fc
jmp 0x57152a
xor eax, eax
xor esi, esi
jmp 0x571531
xor eax, eax
jmp 0x571531
movzx ecx, byte [esp + eax + 0x1c]
xor byte [edi + eax], cl
inc eax
cmp edx, eax
jne 0x571521
mov eax, dword [esp]
push eax
call sym.fastboot.exe_OPENSSL_free
add esp, 4
jmp 0x571230