Function at 0x4d41d0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 8
mov edx, dword [esp + 0x28]
mov ebp, dword [esp + 0x1c]
mov ecx, dword [ebp + 0xc]
xor eax, eax
test ecx, ecx
cmovs eax, ecx
mov edi, ecx
nop dword [eax + eax]
test edi, edi
jle 0x4d4204
mov esi, dword [ebp + 8]
mov ebx, dword [esi + edi*4 - 4]
add edi, 0xffffffff
test ebx, ebx
je 0x4d41f0
jmp 0x4d421a
xor esi, esi
test ecx, ecx
jns 0x4d4293
mov ecx, dword [ebp + 8]
mov ebx, dword [ecx + eax*4 - 4]
add eax, 0xffffffff
mov edi, eax
shl edi, 5
mov ecx, ebx
shr ecx, 0x10
xor eax, eax
cmp ebx, 0x10000
cmovb ecx, ebx
setae al
shl eax, 4
mov dword [esp], eax
mov ebp, ecx
shr ebp, 8
xor eax, eax
cmp ecx, 0x100
setae al
mov dword [esp + 4], eax
cmovb ebp, ecx
mov esi, ebp
shr esi, 4
xor ecx, ecx
cmp ebp, 0x10
setae cl
cmovb esi, ebp
mov ebp, esi
shr ebp, 2
xor eax, eax
cmp esi, 4
cmovb ebp, esi
setae al
cmp ebx, 1
sbb edi, 0
add edi, 8
or edi, dword [esp]
cmp ebp, 2
mov ebp, dword [esp + 0x1c]
mov esi, dword [esp + 4]
lea esi, [edi + esi*8]
lea ecx, [esi + ecx*4]
lea esi, [ecx + eax*2]
sbb esi, 0xffffffff
shr esi, 3
mov eax, 0x42
cmp esi, edx
jne 0x4d4535
pxor xmm0, xmm0
mov esi, dword [esp + 0x20]
movdqu xmmword [esi + 0x30], xmm0
movdqu xmmword [esi + 0x20], xmm0
movdqu xmmword [esi + 0x10], xmm0
movdqu xmmword [esi], xmm0
mov dword [esi + 0x40], 0
test edx, edx
mov ebx, dword [esp + 0x24]
je 0x4d4487
xor edi, edi
cmp edx, 8
jb 0x4d43f2
lea eax, [ebx + edx]
cmp eax, esi
jbe 0x4d42eb
lea eax, [esi + edx]
cmp eax, ebx
ja 0x4d43f2
xor edi, edi
cmp edx, 0x20
jb 0x4d439d
mov eax, ebp
mov edi, edx
and edi, 0xffffffe0
add ebx, edx
add ebx, 0xfffffff0
xor ebp, ebp
pxor xmm0, xmm0
nop dword [eax + eax]
movdqu xmm1, xmmword [ebx - 0x10]
movdqu xmm2, xmmword [ebx]
movdqa xmm3, xmm2
punpcklbw xmm3, xmm0
pshufd xmm3, xmm3, 0x4e
pshuflw xmm3, xmm3, 0x1b
pshufhw xmm3, xmm3, 0x1b
punpckhbw xmm2, xmm0
pshufd xmm2, xmm2, 0x4e
pshuflw xmm2, xmm2, 0x1b
pshufhw xmm2, xmm2, 0x1b
packuswb xmm2, xmm3
movdqa xmm3, xmm1
punpcklbw xmm3, xmm0
pshufd xmm3, xmm3, 0x4e
pshuflw xmm3, xmm3, 0x1b
pshufhw xmm3, xmm3, 0x1b
punpckhbw xmm1, xmm0
pshufd xmm1, xmm1, 0x4e
pshuflw xmm1, xmm1, 0x1b
pshufhw xmm1, xmm1, 0x1b
packuswb xmm1, xmm3
movdqu xmmword [esi + ebp], xmm2
movdqu xmmword [esi + ebp + 0x10], xmm1
add ebp, 0x20
add ebx, 0xffffffe0
cmp edi, ebp
jne 0x4d4310
cmp edi, edx
mov ebp, eax
mov ebx, dword [esp + 0x24]
je 0x4d4487
test dl, 0x18
je 0x4d43f2
mov eax, edi
mov edi, edx
and edi, 0xfffffff8
mov ecx, edx
sub ecx, eax
add ecx, ebx
add ecx, 0xfffffff8
pxor xmm0, xmm0
nop word cs:[eax + eax]
nop dword [eax + eax]
movq xmm1, qword [ecx]
punpcklbw xmm1, xmm0
pshufd xmm1, xmm1, 0x4e
pshuflw xmm1, xmm1, 0x1b
pshufhw xmm1, xmm1, 0x1b
packuswb xmm1, xmm1
movq qword [esi + eax], xmm1
add eax, 8
add ecx, 0xfffffff8
cmp edi, eax
jne 0x4d43c0
cmp edi, edx
je 0x4d4487
mov ecx, edi
not ecx
lea eax, [ecx + edx]
mov ebx, edx
and ebx, 3
je 0x4d4441
mov dword [esp], eax
add ecx, 1
add edi, esi
mov eax, dword [esp + 0x24]
lea ebp, [edx + eax]
add ebp, 0xffffffff
xor esi, esi
nop word cs:[eax + eax]
nop
movzx eax, byte [ebp + ecx]
mov byte [edi + esi], al
add esi, 1
add ecx, 0xffffffff
cmp ebx, esi
jne 0x4d4420
neg ecx
mov edi, ecx
mov esi, dword [esp + 0x20]
mov ebp, dword [esp + 0x1c]
mov eax, dword [esp]
cmp eax, 3
mov ebx, dword [esp + 0x24]
jb 0x4d4487
sub edx, edi
lea eax, [edi + esi]
add eax, 3
nop word cs:[eax + eax]
nop dword [eax]
movzx ecx, byte [ebx + edx - 1]
mov byte [eax - 3], cl
movzx ecx, byte [ebx + edx - 2]
mov byte [eax - 2], cl
movzx ecx, byte [ebx + edx - 3]
mov byte [eax - 1], cl
movzx ecx, byte [ebx + edx - 4]
mov byte [eax], cl
add eax, 4
add edx, 0xfffffffc
jne 0x4d4460
mov ecx, dword [ebp + 0xc]
mov eax, 0x4d
test ecx, ecx
je 0x4d4535
mov edx, dword [ebp + 8]
cmp ecx, 1
mov dword [esp + 4], ecx
jne 0x4d44a9
xor ecx, ecx
xor esi, esi
jmp 0x4d4504
and ecx, 0xfffffffe
mov dword [esp], ecx
xor ecx, ecx
mov ebx, esi
xor esi, esi
nop word cs:[eax + eax]
nop
mov ebp, dword [ebx + esi*4]
mov edi, dword [edx + esi*4]
mov eax, ebp
sub eax, edi
xor edi, ebp
xor eax, ebp
or eax, edi
xor eax, ebp
mov ebp, dword [ebx + esi*4 + 4]
sar eax, 0x1f
or eax, 1
test edi, edi
mov edi, dword [edx + esi*4 + 4]
cmove eax, ecx
mov ecx, ebp
sub ecx, edi
xor edi, ebp
xor ecx, ebp
or ecx, edi
xor ecx, ebp
sar ecx, 0x1f
or ecx, 1
test edi, edi
cmove ecx, eax
add esi, 2
cmp dword [esp], esi
jne 0x4d44c0
test byte [esp + 4], 1
je 0x4d452c
mov eax, dword [esp + 0x20]
mov edi, dword [eax + esi*4]
mov edx, dword [edx + esi*4]
mov eax, edi
sub eax, edx
xor edx, edi
xor eax, edi
or eax, edx
xor eax, edi
sar eax, 0x1f
or eax, 1
test edx, edx
cmovne ecx, eax
test ecx, ecx
mov eax, 0x4d
js 0x4d4556
push eax
push str.external_boringssl_src_crypto_fipsmodule_ec_scalar.c
push 0x85
push 0
push 0xf
call sym.fastboot.exe_ERR_put_error
add esp, 0x14
xor eax, eax
add esp, 8
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, 1
jmp 0x4d454e