Function at 0x4ecec0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x40
mov esi, dword [ebp + 0x14]
mov eax, dword [ebp + 0x18]
test eax, eax
cmove eax, esi
mov dword [esp + 0x1c], eax
mov ebx, dword [ebp + 8]
mov eax, dword [ebx + 4]
mov edx, dword [eax + 4]
test edx, edx
je 0x4ed031
mov ecx, dword [eax]
xor edi, edi
mov eax, 0
cmp edx, 8
jb 0x4ecff0
mov edi, edx
and edi, 0xfffffff8
lea eax, [edi - 8]
mov ebx, eax
shr ebx, 3
add ebx, 1
mov esi, ebx
and esi, 3
cmp eax, 0x18
jae 0x4ecf24
pxor xmm0, xmm0
xor eax, eax
pxor xmm1, xmm1
jmp 0x4ecf97
and ebx, 0xfffffffc
pxor xmm0, xmm0
xor eax, eax
pxor xmm1, xmm1
nop word cs:[eax + eax]
nop dword [eax + eax]
movdqu xmm2, xmmword [ecx + eax*4]
por xmm2, xmm0
movdqu xmm0, xmmword [ecx + eax*4 + 0x10]
por xmm0, xmm1
movdqu xmm1, xmmword [ecx + eax*4 + 0x20]
movdqu xmm3, xmmword [ecx + eax*4 + 0x30]
movdqu xmm4, xmmword [ecx + eax*4 + 0x40]
por xmm4, xmm1
por xmm4, xmm2
movdqu xmm2, xmmword [ecx + eax*4 + 0x50]
por xmm2, xmm3
por xmm2, xmm0
movdqu xmm0, xmmword [ecx + eax*4 + 0x60]
por xmm0, xmm4
movdqu xmm1, xmmword [ecx + eax*4 + 0x70]
por xmm1, xmm2
add eax, 0x20
add ebx, 0xfffffffc
jne 0x4ecf40
test esi, esi
je 0x4ecfca
lea eax, [ecx + eax*4]
add eax, 0x10
shl esi, 5
xor ebx, ebx
nop word cs:[eax + eax]
movdqu xmm2, xmmword [eax + ebx - 0x10]
por xmm0, xmm2
movdqu xmm2, xmmword [eax + ebx]
por xmm1, xmm2
add ebx, 0x20
cmp esi, ebx
jne 0x4ecfb0
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd eax, xmm0
cmp edx, edi
mov esi, dword [ebp + 0x14]
mov ebx, dword [ebp + 8]
je 0x4ecffa
nop
or eax, dword [ecx + edi*4]
add edi, 1
cmp edx, edi
jne 0x4ecff0
test eax, eax
je 0x4ed031
mov eax, dword [esi + 4]
mov dword [esp + 0x18], eax
xor eax, eax
test edx, edx
cmovs eax, edx
mov dword [esp + 0x38], eax
mov eax, edx
nop word cs:[eax + eax]
nop dword [eax]
test eax, eax
jle 0x4ed042
mov esi, dword [ecx + eax*4 - 4]
add eax, 0xffffffff
test esi, esi
je 0x4ed020
jmp 0x4ed057
push 0x259
push str.external_boringssl_src_crypto_fipsmodule_rsa_padding.c
push pe_nt_image_headers32
jmp 0x4ed218
xor edi, edi
test edx, edx
jns 0x4ed0e9
mov esi, dword [esp + 0x38]
lea eax, [esi - 1]
mov esi, dword [ecx + esi*4 - 4]
shl eax, 5
xor ebx, ebx
test esi, esi
setne bl
mov dword [esp + 0x14], ebx
mov edi, esi
shr edi, 0x10
cmp esi, 0x10000
mov ebx, 0
setae bl
cmovb edi, esi
shl ebx, 4
mov dword [esp + 0xc], ebx
mov esi, edi
shr esi, 8
xor ebx, ebx
cmp edi, 0x100
cmovb esi, edi
setae bl
mov dword [esp + 4], ebx
mov edi, esi
shr edi, 4
xor ebx, ebx
cmp esi, 0x10
cmovb edi, esi
setae bl
mov dword [esp + 8], ebx
mov esi, edi
shr esi, 2
xor ebx, ebx
cmp edi, 4
cmovb esi, edi
setae bl
mov dword [esp + 0x10], ebx
mov edi, dword [esp + 0x14]
or edi, eax
add edi, dword [esp + 0xc]
mov eax, dword [esp + 4]
lea eax, [edi + eax*8]
mov ebx, dword [ebp + 8]
mov edi, dword [esp + 8]
lea eax, [eax + edi*4]
cmp esi, 2
mov esi, dword [esp + 0x10]
lea edi, [eax + esi*2]
sbb edi, 0xffffffff
add edi, 0xffffffff
and edi, 7
mov eax, dword [ebx]
mov eax, dword [eax + 0x14]
test eax, eax
je 0x4ed103
push ebx
call eax
add esp, 4
jmp 0x4ed1b5
mov eax, edx
nop word cs:[eax + eax]
nop
test eax, eax
jle 0x4ed121
mov esi, dword [ecx + eax*4 - 4]
add eax, 0xffffffff
test esi, esi
je 0x4ed110
jmp 0x4ed136
xor eax, eax
test edx, edx
jns 0x4ed1b5
mov eax, dword [esp + 0x38]
mov esi, dword [ecx + eax*4 - 4]
add eax, 0xffffffff
shl eax, 5
mov dword [esp + 0x14], edi
mov ebx, esi
shr ebx, 0x10
xor ecx, ecx
cmp esi, 0x10000
setae cl
cmovb ebx, esi
shl ecx, 4
mov dword [esp + 0xc], ecx
mov edi, ebx
shr edi, 8
xor ecx, ecx
cmp ebx, 0x100
cmovb edi, ebx
setae cl
mov dword [esp + 4], ecx
mov ecx, edi
shr ecx, 4
xor ebx, ebx
cmp edi, 0x10
cmovb ecx, edi
setae bl
mov edi, ecx
shr edi, 2
xor edx, edx
cmp ecx, 4
cmovb edi, ecx
setae dl
cmp esi, 1
sbb eax, 0
add eax, 8
or eax, dword [esp + 0xc]
cmp edi, 2
mov ecx, dword [esp + 4]
lea eax, [eax + ecx*8]
lea eax, [eax + ebx*4]
mov edi, dword [esp + 0x14]
lea eax, [eax + edx*2]
sbb eax, 0xffffffff
shr eax, 3
mov esi, dword [ebp + 0xc]
test edi, edi
jne 0x4ed1c5
mov byte [esi], 0
add esi, 1
add eax, 0xffffffff
mov edx, dword [esp + 0x18]
mov ebx, dword [ebp + 0x1c]
lea ecx, [edx + 2]
cmp eax, ecx
jae 0x4ed1da
push 0x266
jmp 0x4ed211
mov ecx, edx
cmp ebx, 0xffffffff
je 0x4ed1f9
cmp ebx, 0xfffffffe
jne 0x4ed1ef
mov ecx, eax
sub ecx, edx
add ecx, 0xfffffffe
jmp 0x4ed1f9
mov ecx, ebx
test ebx, ebx
js 0x4ed39f
mov dword [esp + 0x14], edi
mov dword [esp + 0xc], eax
mov ebx, eax
sub ebx, edx
lea eax, [ebx - 2]
cmp eax, ecx
jae 0x4ed23b
push 0x27b
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
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
test ecx, ecx
mov dword [esp + 4], ecx
je 0x4ed26a
push ecx
call sym.fastboot.exe_OPENSSL_malloc
add esp, 4
test eax, eax
je 0x4ed3b3
mov edi, eax
push 0x56fcd2
push dword [esp + 8]
push eax
call fcn.004cb6b0
add esp, 0xc
jmp 0x4ed26c
xor edi, edi
pxor xmm0, xmm0
movdqa xmmword [esp + 0x20], xmm0
mov ecx, dword [ebp + 0x14]
test ecx, ecx
je 0x4ed2ad
push dword [ecx + 0x1c]
call sym.fastboot.exe_OPENSSL_malloc
add esp, 4
test eax, eax
je 0x4ed3c4
push 0
mov dword [esp + 0xc], eax
call sym.fastboot.exe_OPENSSL_free
add esp, 4
mov eax, dword [esp + 8]
mov dword [esp + 0x24], eax
mov ecx, dword [ebp + 0x14]
mov dword [esp + 0x20], ecx
mov dword [esp + 8], esi
lea eax, [esi + ebx]
add eax, 0xffffffff
mov dword [esp + 0x10], eax
add ebx, 0xffffffff
lea esi, [esp + 0x20]
push esi
call dword [ecx + 0xc]
add esp, 4
mov eax, dword [esp + 0x20]
push 8
push 0x56fd61
push esi
call dword [eax + 0x10]
add esp, 0xc
mov eax, dword [esp + 0x20]
push dword [esp + 0x18]
push dword [ebp + 0x10]
push esi
call dword [eax + 0x10]
add esp, 0xc
mov eax, dword [esp + 0x20]
push dword [esp + 4]
push edi
push esi
call dword [eax + 0x10]
add esp, 0xc
mov eax, dword [esp + 0x20]
push dword [esp + 0x10]
push esi
call dword [eax + 0x14]
add esp, 8
mov eax, dword [esp + 0x20]
push dword [eax + 0x1c]
push dword [esp + 0x28]
call sym.fastboot.exe_OPENSSL_cleanse
add esp, 8
push dword [esp + 0x24]
call sym.fastboot.exe_OPENSSL_free
add esp, 4
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x4ed33c
push dword [esp + 0x28]
call dword [eax]
add esp, 4
pxor xmm0, xmm0
movdqa xmmword [esp + 0x20], xmm0
mov esi, dword [esp + 8]
mov ecx, esi
mov edx, ebx
push dword [esp + 0x1c]
mov ebx, dword [esp + 0x1c]
push ebx
push dword [esp + 0x18]
call fcn.004ec090
add esp, 0xc
test eax, eax
je 0x4ed3f0
mov eax, esi
mov esi, dword [esp + 4]
lea ecx, [ebx + esi]
mov edx, dword [esp + 0xc]
sub edx, ecx
xor byte [edx + eax - 2], 1
test esi, esi
je 0x4ed5aa
mov eax, dword [esp + 8]
lea ebx, [edx + eax]
add ebx, 0xfffffffe
xor eax, eax
cmp esi, 8
jae 0x4ed3f7
mov edx, ebx
jmp 0x4ed53b
push 0x274
push str.external_boringssl_src_crypto_fipsmodule_rsa_padding.c
push 0x8a
jmp 0x4ed218
push 0x282
push str.external_boringssl_src_crypto_fipsmodule_rsa_padding.c
push 0x41
jmp 0x4ed218
push 0xd2
push str.external_boringssl_src_crypto_fipsmodule_digest_digest.c
push 0x41
push 0
push 0x1d
call sym.fastboot.exe_ERR_put_error
add esp, 0x14
push 0
call sym.fastboot.exe_OPENSSL_free
add esp, 4
pxor xmm0, xmm0
movdqa xmmword [esp + 0x20], xmm0
xor esi, esi
jmp 0x4ed228
mov dword [esp + 0x1c], ebx
mov ebx, dword [esp + 0xc]
add ebx, 0xffffffff
mov dword [esp + 0x10], ebx
sub ebx, ecx
mov ecx, dword [esp + 8]
add ebx, ecx
add esi, edi
cmp ebx, esi
jae 0x4ed42f
mov esi, dword [esp + 0x10]
sub esi, dword [esp + 0x18]
add esi, ecx
cmp edi, esi
jae 0x4ed42f
mov edx, dword [esp + 0x1c]
mov esi, dword [esp + 4]
jmp 0x4ed53b
xor eax, eax
mov ecx, dword [esp + 4]
cmp ecx, 0x20
mov ebx, dword [esp + 0x1c]
jb 0x4ed50c
mov eax, ecx
and eax, 0xffffffe0
lea esi, [eax - 0x20]
mov ecx, esi
shr ecx, 5
add ecx, 1
test esi, esi
je 0x4ed4bd
mov esi, ecx
and esi, 0xfffffffe
mov ebx, dword [esp + 8]
add ebx, edx
add ebx, 0x2f
xor edx, edx
movups xmm0, xmmword [edi + edx]
movups xmm1, xmmword [edi + edx + 0x10]
movups xmm2, xmmword [ebx + edx - 0x30]
xorps xmm2, xmm0
movups xmm0, xmmword [ebx + edx - 0x20]
xorps xmm0, xmm1
movups xmmword [ebx + edx - 0x30], xmm2
movups xmmword [ebx + edx - 0x20], xmm0
movdqu xmm0, xmmword [edi + edx + 0x20]
movdqu xmm1, xmmword [edi + edx + 0x30]
movdqu xmm2, xmmword [ebx + edx - 0x10]
pxor xmm2, xmm0
movdqu xmm0, xmmword [ebx + edx]
pxor xmm0, xmm1
movdqu xmmword [ebx + edx - 0x10], xmm2
movdqu xmmword [ebx + edx], xmm0
add edx, 0x40
add esi, 0xfffffffe
jne 0x4ed466
jmp 0x4ed4bf
xor edx, edx
test cl, 1
mov ebx, dword [esp + 0x1c]
je 0x4ed4f3
movdqu xmm0, xmmword [edi + edx]
movdqu xmm1, xmmword [edi + edx + 0x10]
movdqu xmm2, xmmword [ebx + edx + 1]
pxor xmm2, xmm0
movdqu xmm0, xmmword [ebx + edx + 0x11]
pxor xmm0, xmm1
movdqu xmmword [ebx + edx + 1], xmm2
movdqu xmmword [ebx + edx + 0x11], xmm0
mov ecx, dword [esp + 4]
cmp ecx, eax
je 0x4ed5aa
test cl, 0x18
je 0x4ed5d6
mov ecx, dword [esp + 4]
mov esi, eax
mov eax, ecx
and eax, 0xfffffff8
lea edx, [ebx + eax]
add ebx, 1
movq xmm0, qword [edi + esi]
movq xmm1, qword [ebx + esi]
pxor xmm1, xmm0
movq qword [ebx + esi], xmm1
add esi, 8
cmp eax, esi
jne 0x4ed519
mov esi, dword [esp + 4]
cmp esi, eax
je 0x4ed5aa
mov ebx, eax
not ebx
add ebx, esi
and esi, 3
je 0x4ed562
nop word cs:[eax + eax]
movzx ecx, byte [edi + eax]
xor byte [edx + 1], cl
add edx, 1
add eax, 1
add esi, 0xffffffff
jne 0x4ed550
cmp ebx, 3
mov esi, dword [esp + 4]
jb 0x4ed5aa
sub esi, eax
add eax, edi
add eax, 3
xor ecx, ecx
nop word cs:[eax + eax]
nop
movzx ebx, byte [eax + ecx - 3]
xor byte [edx + ecx + 1], bl
movzx ebx, byte [eax + ecx - 2]
xor byte [edx + ecx + 2], bl
movzx ebx, byte [eax + ecx - 1]
xor byte [edx + ecx + 3], bl
movzx ebx, byte [eax + ecx]
xor byte [edx + ecx + 4], bl
add ecx, 4
cmp esi, ecx
jne 0x4ed580
mov eax, dword [esp + 0x14]
test eax, eax
mov edx, dword [esp + 8]
je 0x4ed5c3
mov cl, 8
sub cl, al
mov eax, 0xff
shr eax, cl
and byte [edx], al
mov eax, dword [esp + 0xc]
mov byte [eax + edx - 1], 0xbc
mov esi, 1
jmp 0x4ed228
add ebx, eax
mov edx, ebx
jmp 0x4ed426