Function at 0x5075f0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x2c
mov eax, dword [esp + 0x4c]
mov esi, dword [esp + 0x50]
test esi, esi
cmove esi, eax
mov ecx, dword [esp + 0x40]
mov ecx, dword [ecx + 4]
mov ebp, dword [ecx + 4]
test ebp, ebp
je 0x5076af
mov ecx, dword [ecx]
xor edi, edi
mov edx, 0
cmp ebp, 8
jb 0x507676
mov edi, ebp
and edi, 0xfffffff8
pxor xmm0, xmm0
xor edx, edx
pxor xmm1, xmm1
nop word cs:[eax + eax]
movdqu xmm2, xmmword [ecx + edx*4]
por xmm0, xmm2
movdqu xmm2, xmmword [ecx + edx*4 + 0x10]
por xmm1, xmm2
add edx, 8
cmp edi, edx
jne 0x507640
por xmm1, xmm0
pshufd xmm0, xmm1, 0xee
por xmm0, xmm1
pshufd xmm1, xmm0, 0x55
por xmm1, xmm0
movd edx, xmm1
jmp 0x50767a
or edx, dword [ecx + edi*4]
inc edi
cmp ebp, edi
jne 0x507676
test edx, edx
je 0x5076af
mov dword [esp + 0x28], esi
mov ebx, dword [esp + 0x44]
mov edx, dword [eax + 4]
mov dword [esp + 0x24], edx
mov eax, ebp
sar eax, 0x1f
and eax, ebp
mov dword [esp + 4], eax
mov edi, ebp
nop
test edi, edi
jle 0x5076c0
mov esi, dword [ecx + edi*4 - 4]
dec edi
test esi, esi
je 0x5076a0
jmp 0x5076d5
push 0x264
push str.external_boringssl_src_crypto_fipsmodule_rsa_padding.c
push pe_nt_image_headers32
jmp 0x50786d
xor edx, edx
test ebp, ebp
jns 0x507752
mov eax, dword [esp + 4]
lea edi, [eax - 1]
mov esi, dword [ecx + eax*4 - 4]
shl edi, 5
xor ebx, ebx
test esi, esi
setne bl
mov eax, esi
shr eax, 0x10
xor edx, edx
cmp esi, 0x10000
setae dl
cmovb eax, esi
shl edx, 4
mov dword [esp + 0x10], edx
mov esi, eax
shr esi, 8
xor edx, edx
cmp eax, 0x100
setae dl
mov dword [esp], edx
cmovb esi, eax
mov eax, esi
shr eax, 4
xor edx, edx
cmp esi, 0x10
cmovb eax, esi
setae dl
mov dword [esp + 8], edx
mov esi, eax
shr esi, 2
xor edx, edx
cmp eax, 4
cmovb esi, eax
setae dl
or ebx, edi
add ebx, dword [esp + 0x10]
mov eax, dword [esp]
lea edi, [ebx + eax*8]
mov ebx, dword [esp + 0x44]
mov eax, dword [esp + 8]
lea edi, [edi + eax*4]
cmp esi, 2
lea edx, [edi + edx*2]
sbb edx, 0xffffffff
dec edx
and edx, 7
mov dword [esp + 0x10], edx
mov eax, dword [esp + 0x40]
mov edx, dword [eax]
mov edx, dword [edx + 0x14]
test edx, edx
je 0x507772
push eax
call edx
add esp, 4
jmp 0x507815
mov edx, ebp
nop word cs:[eax + eax]
test edx, edx
jle 0x50778f
mov edi, dword [ecx + edx*4 - 4]
dec edx
test edi, edi
je 0x507780
jmp 0x5077a2
xor eax, eax
test ebp, ebp
mov ebx, dword [esp + 0x44]
jns 0x507815
mov edx, dword [esp + 4]
mov edi, dword [ecx + edx*4 - 4]
dec edx
shl edx, 5
mov esi, edi
shr esi, 0x10
xor ecx, ecx
cmp edi, 0x10000
setae cl
cmovb esi, edi
shl ecx, 4
mov ebp, esi
shr ebp, 8
xor eax, eax
cmp esi, 0x100
setae al
mov dword [esp], eax
cmovb ebp, esi
mov esi, ebp
shr esi, 4
xor ebx, ebx
cmp ebp, 0x10
cmovb esi, ebp
setae bl
mov ebp, esi
shr ebp, 2
xor eax, eax
cmp esi, 4
cmovb ebp, esi
setae al
cmp edi, 1
sbb edx, 0
add edx, 8
or edx, ecx
cmp ebp, 2
mov ecx, dword [esp]
lea ecx, [edx + ecx*8]
lea ecx, [ecx + ebx*4]
lea eax, [ecx + eax*2]
sbb eax, 0xffffffff
shr eax, 3
mov ebx, dword [esp + 0x44]
cmp dword [esp + 0x10], 0
jne 0x507821
mov byte [ebx], 0
inc ebx
dec eax
mov esi, dword [esp + 0x24]
lea ecx, [esi + 2]
cmp eax, ecx
jae 0x507833
push 0x271
jmp 0x507866
mov edx, esi
mov ecx, dword [esp + 0x54]
cmp ecx, 0xffffffff
je 0x507856
cmp ecx, 0xfffffffe
jne 0x50784c
mov edx, eax
sub edx, esi
add edx, 0xfffffffe
jmp 0x507856
mov edx, ecx
test ecx, ecx
js 0x5079ee
mov ebp, eax
sub ebp, esi
lea ecx, [ebp - 2]
cmp ecx, edx
jae 0x507890
push 0x286
push str.external_boringssl_src_crypto_fipsmodule_rsa_padding.c
push 0x72
push 0
push 4
call sym.fastboot.exe_ERR_put_error
add esp, 0x14
xor esi, esi
xor edi, edi
push edi
call sym.fastboot.exe_OPENSSL_free
add esp, 4
mov eax, esi
add esp, 0x2c
pop esi
pop edi
pop ebx
pop ebp
ret
mov dword [esp + 8], eax
test edx, edx
mov dword [esp], edx
je 0x5078be
push edx
call sym.fastboot.exe_OPENSSL_malloc
add esp, 4
test eax, eax
je 0x507879
mov edi, eax
push 0x596773
push dword [esp + 4]
push eax
call fcn.004e8610
add esp, 0xc
jmp 0x5078c0
xor edi, edi
pxor xmm0, xmm0
movdqu xmmword [esp + 0x14], xmm0
mov ecx, dword [esp + 0x4c]
test ecx, ecx
je 0x507903
push dword [ecx + 0x1c]
call sym.fastboot.exe_OPENSSL_malloc
add esp, 4
test eax, eax
je 0x507a02
push 0
mov dword [esp + 8], eax
call sym.fastboot.exe_OPENSSL_free
add esp, 4
mov eax, dword [esp + 4]
mov dword [esp + 0x18], eax
mov ecx, dword [esp + 0x4c]
mov dword [esp + 0x14], ecx
lea eax, [ebx + ebp]
dec eax
mov dword [esp + 4], eax
dec ebp
lea eax, [esp + 0x14]
push eax
call dword [ecx + 0xc]
add esp, 4
mov eax, dword [esp + 0x14]
push 8
push 0x5967ca
lea ecx, [esp + 0x1c]
push ecx
call dword [eax + 0x10]
add esp, 0xc
mov eax, dword [esp + 0x14]
push esi
push dword [esp + 0x4c]
lea ecx, [esp + 0x1c]
push ecx
call dword [eax + 0x10]
add esp, 0xc
mov eax, dword [esp + 0x14]
push dword [esp]
push edi
lea ecx, [esp + 0x1c]
push ecx
call dword [eax + 0x10]
add esp, 0xc
mov eax, dword [esp + 0x14]
push dword [esp + 4]
lea ecx, [esp + 0x18]
push ecx
call dword [eax + 0x14]
add esp, 8
mov eax, dword [esp + 0x14]
push dword [eax + 0x1c]
push dword [esp + 0x1c]
call sym.fastboot.exe_OPENSSL_cleanse
add esp, 8
push dword [esp + 0x18]
call sym.fastboot.exe_OPENSSL_free
add esp, 4
mov eax, dword [esp + 0x20]
test eax, eax
je 0x507997
push dword [esp + 0x1c]
call dword [eax]
add esp, 4
pxor xmm0, xmm0
movdqu xmmword [esp + 0x14], xmm0
mov ecx, ebx
mov edx, ebp
push dword [esp + 0x28]
push esi
push dword [esp + 0xc]
call fcn.00506a20
add esp, 0xc
test eax, eax
je 0x507a16
mov edx, dword [esp]
add esi, edx
mov ecx, dword [esp + 8]
sub ecx, esi
mov dword [esp + 0xc], ebx
xor byte [ecx + ebx - 2], 1
test edx, edx
je 0x507b3a
mov ebp, dword [esp + 0xc]
lea ebx, [ecx + ebp]
add ebx, 0xfffffffe
xor eax, eax
cmp edx, 8
jae 0x507a1d
mov ecx, ebx
jmp 0x507ad9
push 0x27f
push str.external_boringssl_src_crypto_fipsmodule_rsa_padding.c
push 0x8a
jmp 0x50786d
push 0
call sym.fastboot.exe_OPENSSL_free
add esp, 4
pxor xmm0, xmm0
movdqu xmmword [esp + 0x14], xmm0
xor esi, esi
jmp 0x50787d
mov ebp, dword [esp + 8]
dec ebp
mov dword [esp + 4], ebp
sub ebp, esi
add ebp, dword [esp + 0xc]
lea esi, [edi + edx]
cmp ebp, esi
mov esi, dword [esp + 0xc]
jae 0x507a4f
mov edx, dword [esp + 4]
sub edx, dword [esp + 0x24]
add edx, esi
cmp edi, edx
jae 0x507a4f
mov ecx, ebx
mov edx, dword [esp]
jmp 0x507ad9
xor eax, eax
mov edx, dword [esp]
cmp edx, 0x20
jb 0x507aac
mov eax, edx
and eax, 0xffffffe0
add ecx, esi
add ecx, 0xf
xor esi, esi
movdqu xmm0, xmmword [edi + esi]
movdqu xmm1, xmmword [edi + esi + 0x10]
movdqu xmm2, xmmword [ecx + esi - 0x10]
pxor xmm2, xmm0
movdqu xmm0, xmmword [ecx + esi]
pxor xmm0, xmm1
movdqu xmmword [ecx + esi - 0x10], xmm2
movdqu xmmword [ecx + esi], xmm0
add esi, 0x20
cmp eax, esi
jne 0x507a65
mov ecx, dword [esp]
cmp ecx, eax
je 0x507b3a
test cl, 0x18
je 0x507b66
mov edx, dword [esp]
mov esi, eax
mov eax, edx
and eax, 0xfffffff8
lea ecx, [ebx + eax]
movq xmm0, qword [edi + esi]
movq xmm1, qword [ebx + esi + 1]
pxor xmm1, xmm0
movq qword [ebx + esi + 1], xmm1
add esi, 8
cmp eax, esi
jne 0x507ab6
mov edx, dword [esp]
cmp edx, eax
je 0x507b3a
mov ebp, eax
not ebp
add ebp, edx
mov esi, edx
and esi, 3
je 0x507afc
nop word cs:[eax + eax]
movzx edx, byte [edi + eax]
xor byte [ecx + 1], dl
inc ecx
inc eax
dec esi
jne 0x507af0
cmp ebp, 3
mov esi, dword [esp]
jb 0x507b3a
sub esi, eax
add eax, edi
add eax, 3
xor edx, edx
nop dword [eax]
movzx ebx, byte [eax + edx - 3]
xor byte [ecx + edx + 1], bl
movzx ebx, byte [eax + edx - 2]
xor byte [ecx + edx + 2], bl
movzx ebx, byte [eax + edx - 1]
xor byte [ecx + edx + 3], bl
movzx ebx, byte [eax + edx]
xor byte [ecx + edx + 4], bl
add edx, 4
cmp esi, edx
jne 0x507b10
mov eax, dword [esp + 0x10]
test eax, eax
mov edx, dword [esp + 0xc]
je 0x507b53
mov cl, 8
sub cl, al
mov eax, 0xff
shr eax, cl
and byte [edx], al
mov eax, dword [esp + 8]
mov byte [eax + edx - 1], 0xbc
mov esi, 1
jmp 0x50787d
add ebx, eax
jmp 0x507a45