Function at 0x4e67f0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x1c
mov ebx, dword [esp + 0x40]
cmp byte [ebx + 0x14], 0
jne 0x4e685a
mov ecx, dword [ebx + 8]
mov esi, dword [ebx + 0x10]
cmp ecx, dword [ebx + 0xc]
jne 0x4e6849
lea eax, [ecx + ecx*2]
shr eax, 1
test ecx, ecx
mov edi, 0x20
cmovne edi, eax
cmp edi, ecx
jbe 0x4e6854
cmp edi, 0x3fffffff
ja 0x4e6854
lea eax, [edi*4]
push eax
push dword [ebx + 4]
call sym.fastboot.exe_OPENSSL_realloc
add esp, 8
test eax, eax
je 0x4e6854
mov dword [ebx + 4], eax
mov dword [ebx + 0xc], edi
mov ecx, dword [ebx + 8]
jmp 0x4e684c
mov eax, dword [ebx + 4]
mov dword [eax + ecx*4], esi
inc dword [ebx + 8]
jmp 0x4e685a
mov word [ebx + 0x14], 0x101
push ebx
call sym.fastboot.exe_BN_CTX_get
add esp, 4
xor edi, edi
test eax, eax
je 0x4e7078
mov esi, eax
mov ebp, dword [esp + 0x3c]
mov ecx, dword [esp + 0x30]
lea eax, [ebp + 0x14]
push ebp
push ebx
push eax
push dword [ecx + 4]
push dword [esp + 0x48]
push esi
call sym.fastboot.exe_BN_mod_exp_mont_consttime
add esp, 0x18
test eax, eax
je 0x4e7078
push ebx
push ebp
push ebp
push esi
push esi
call sym.fastboot.exe_BN_mod_mul_montgomery
add esp, 0x14
test eax, eax
je 0x4e7078
mov ebp, dword [esp + 0x30]
mov edi, dword [ebp + 8]
mov dword [esp + 4], esi
mov eax, dword [esi + 4]
mov ecx, dword [edi + 4]
xor edx, edx
mov esi, eax
sub esi, ecx
mov dword [esp + 0x14], esi
mov dword [esp + 0xc], edi
jge 0x4e6948
mov esi, dword [edi]
mov ebp, ecx
sub ebp, eax
xor edx, edx
mov ebx, eax
cmp ebp, 8
jb 0x4e6940
mov dword [esp], ebp
and ebp, 0xfffffff8
lea ebx, [eax + ebp]
lea edx, [esi + eax*4]
add edx, 0x10
pxor xmm0, xmm0
xor edi, edi
pxor xmm1, xmm1
nop word cs:[eax + eax]
movdqu xmm2, xmmword [edx + edi*4 - 0x10]
por xmm0, xmm2
movdqu xmm2, xmmword [edx + edi*4]
por xmm1, xmm2
add edi, 8
cmp ebp, edi
jne 0x4e6900
por xmm1, xmm0
pshufd xmm0, xmm1, 0xee
por xmm0, xmm1
pshufd xmm1, xmm0, 0x55
por xmm1, xmm0
movd edx, xmm1
cmp dword [esp], ebp
mov edi, dword [esp + 0xc]
je 0x4e6948
nop dword [eax]
or edx, dword [esi + ebx*4]
inc ebx
cmp ecx, ebx
jne 0x4e6940
cmp ecx, eax
mov dword [esp], eax
jge 0x4e6969
mov eax, dword [esp + 4]
mov esi, dword [eax]
mov eax, dword [esp + 0x14]
cmp eax, 8
jae 0x4e696f
mov ebx, ecx
mov eax, dword [esp]
mov ebp, dword [esp + 0x30]
jmp 0x4e69e0
mov ebp, dword [esp + 0x30]
jmp 0x4e69e8
mov ebp, eax
and ebp, 0xfffffff8
lea ebx, [ecx + ebp]
movd xmm1, edx
lea edx, [esi + ecx*4]
add edx, 0x10
pxor xmm0, xmm0
xor edi, edi
nop word [eax + eax]
movdqu xmm2, xmmword [edx + edi*4 - 0x10]
por xmm1, xmm2
movdqu xmm2, xmmword [edx + edi*4]
por xmm0, xmm2
add edi, 8
cmp ebp, edi
jne 0x4e6990
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd edx, xmm0
cmp eax, ebp
mov ebp, dword [esp + 0x30]
mov eax, dword [esp]
mov edi, dword [esp + 0xc]
je 0x4e69e8
nop word cs:[eax + eax]
or edx, dword [esi + ebx*4]
inc ebx
cmp eax, ebx
jne 0x4e69e0
cmp eax, ecx
cmovl ecx, eax
test ecx, ecx
jle 0x4e6a4e
mov eax, dword [esp + 4]
mov esi, dword [eax]
mov edi, dword [edi]
xor ebx, ebx
cmp ecx, 4
jb 0x4e6a41
mov ebx, ecx
and ebx, 0xfffffffc
movd xmm0, edx
xor eax, eax
nop dword [eax + eax]
movdqu xmm1, xmmword [esi + eax*4]
movdqu xmm2, xmmword [edi + eax*4]
pxor xmm2, xmm1
por xmm0, xmm2
add eax, 4
cmp ebx, eax
jne 0x4e6a10
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd edx, xmm0
jmp 0x4e6a4a
mov eax, dword [edi + ebx*4]
xor eax, dword [esi + ebx*4]
or edx, eax
inc ebx
cmp ecx, ebx
jne 0x4e6a41
mov eax, dword [esp + 4]
mov eax, dword [eax + 0xc]
mov dword [esp + 8], eax
mov eax, dword [ebp + 0xc]
mov dword [esp + 0x14], eax
mov edi, dword [eax + 4]
xor ebp, ebp
mov eax, dword [esp]
mov ecx, eax
sub ecx, edi
mov dword [esp + 0x10], ecx
jge 0x4e6ae8
mov ecx, dword [esp + 0x14]
mov esi, dword [ecx]
mov ecx, edi
sub ecx, eax
xor ebp, ebp
mov ebx, eax
cmp ecx, 8
jb 0x4e6ae0
mov dword [esp + 0x18], ecx
and ecx, 0xfffffff8
lea ebx, [eax + ecx]
lea ebp, [esi + eax*4]
add ebp, 0x10
pxor xmm0, xmm0
xor eax, eax
pxor xmm1, xmm1
nop
movdqu xmm2, xmmword [ebp + eax*4 - 0x10]
por xmm0, xmm2
movdqu xmm2, xmmword [ebp + eax*4]
por xmm1, xmm2
add eax, 8
cmp ecx, eax
jne 0x4e6aa0
por xmm1, xmm0
pshufd xmm0, xmm1, 0xee
por xmm0, xmm1
pshufd xmm1, xmm0, 0x55
por xmm1, xmm0
movd ebp, xmm1
cmp dword [esp + 0x18], ecx
mov eax, dword [esp]
je 0x4e6ae8
nop
or ebp, dword [esi + ebx*4]
inc ebx
cmp edi, ebx
jne 0x4e6ae0
mov ecx, dword [esp + 0xc]
mov ecx, dword [ecx + 0xc]
xor ecx, dword [esp + 8]
cmp edi, eax
mov dword [esp + 0xc], ecx
jge 0x4e6b15
mov eax, dword [esp + 4]
mov esi, dword [eax]
mov ebx, dword [esp + 0x10]
cmp ebx, 8
jae 0x4e6b1b
mov ecx, edi
mov ebx, dword [esp + 0x40]
mov eax, dword [esp]
jmp 0x4e6b90
mov ebx, dword [esp + 0x40]
jmp 0x4e6b98
and ebx, 0xfffffff8
lea ecx, [edi + ebx]
movd xmm1, ebp
lea ebp, [esi + edi*4]
add ebp, 0x10
pxor xmm0, xmm0
xor eax, eax
nop word cs:[eax + eax]
movdqu xmm2, xmmword [ebp + eax*4 - 0x10]
por xmm1, xmm2
movdqu xmm2, xmmword [ebp + eax*4]
por xmm0, xmm2
add eax, 8
cmp ebx, eax
jne 0x4e6b40
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd ebp, xmm0
cmp dword [esp + 0x10], ebx
mov ebx, dword [esp + 0x40]
mov eax, dword [esp]
je 0x4e6b98
nop word cs:[eax + eax]
or ebp, dword [esi + ecx*4]
inc ecx
cmp eax, ecx
jne 0x4e6b90
mov ecx, dword [esp + 0xc]
or ecx, edx
cmp eax, edi
cmovl edi, eax
test edi, edi
mov dword [esp + 0xc], ecx
jle 0x4e6c0e
mov eax, dword [esp + 4]
mov eax, dword [eax]
mov ecx, dword [esp + 0x14]
mov edx, dword [ecx]
xor esi, esi
cmp edi, 4
jb 0x4e6c01
mov esi, edi
and esi, 0xfffffffc
movd xmm0, ebp
xor ecx, ecx
nop dword [eax]
movdqu xmm1, xmmword [eax + ecx*4]
movdqu xmm2, xmmword [edx + ecx*4]
pxor xmm2, xmm1
por xmm0, xmm2
add ecx, 4
cmp esi, ecx
jne 0x4e6bd0
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd ebp, xmm0
jmp 0x4e6c0a
mov ecx, dword [edx + esi*4]
xor ecx, dword [eax + esi*4]
or ebp, ecx
inc esi
cmp edi, esi
jne 0x4e6c01
cmp dword [esp + 0xc], 0
sete al
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0x14]
xor ecx, dword [edx + 0xc]
or ecx, ebp
sete cl
or cl, al
movzx ebp, cl
neg ebp
mov edi, dword [esp + 0x30]
cmp dword [edi + 0x10], 2
jl 0x4e706a
mov edx, 1
mov eax, dword [edi + 0x14]
mov ecx, eax
xor ecx, edx
not eax
dec ecx
test ecx, eax
jns 0x4e6c57
cmp ebp, 0xffffffff
jne 0x4e706a
mov dword [esp + 0x14], edx
push ebx
push dword [esp + 0x40]
mov esi, dword [esp + 0xc]
push esi
push esi
push esi
call sym.fastboot.exe_BN_mod_mul_montgomery
add esp, 0x14
test eax, eax
je 0x4e709b
mov dword [esp + 0xc], ebp
mov eax, dword [edi + 0xc]
mov edx, dword [esi + 4]
mov dword [esp], eax
mov ecx, dword [eax + 4]
xor ebx, ebx
mov edi, edx
sub edi, ecx
jge 0x4e6d18
mov eax, dword [esp]
mov esi, dword [eax]
mov eax, ecx
sub eax, edx
xor ebx, ebx
mov ebp, edx
cmp eax, 8
jb 0x4e6d10
mov dword [esp + 8], edi
mov dword [esp + 0x10], eax
and eax, 0xfffffff8
lea ebp, [edx + eax]
lea ebx, [esi + edx*4]
add ebx, 0x10
pxor xmm0, xmm0
xor edi, edi
pxor xmm1, xmm1
nop word cs:[eax + eax]
movdqu xmm2, xmmword [ebx + edi*4 - 0x10]
por xmm0, xmm2
movdqu xmm2, xmmword [ebx + edi*4]
por xmm1, xmm2
add edi, 8
cmp eax, edi
jne 0x4e6cd0
por xmm1, xmm0
pshufd xmm0, xmm1, 0xee
por xmm0, xmm1
pshufd xmm1, xmm0, 0x55
por xmm1, xmm0
movd ebx, xmm1
cmp dword [esp + 0x10], eax
mov edi, dword [esp + 8]
je 0x4e6d18
nop
or ebx, dword [esi + ebp*4]
inc ebp
cmp ecx, ebp
jne 0x4e6d10
cmp ecx, edx
jge 0x4e6da8
mov dword [esp + 8], edi
mov eax, dword [esp + 4]
mov esi, dword [eax]
mov eax, dword [esp + 8]
cmp eax, 8
jae 0x4e6d40
mov ebp, ecx
jmp 0x4e6da0
and eax, 0xfffffff8
lea ebp, [ecx + eax]
movd xmm1, ebx
lea edi, [esi + ecx*4]
add edi, 0x10
pxor xmm0, xmm0
xor ebx, ebx
nop word cs:[eax + eax]
movdqu xmm2, xmmword [edi + ebx*4 - 0x10]
por xmm1, xmm2
movdqu xmm2, xmmword [edi + ebx*4]
por xmm0, xmm2
add ebx, 8
cmp eax, ebx
jne 0x4e6d60
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd ebx, xmm0
cmp dword [esp + 8], eax
je 0x4e6da8
nop word [eax + eax]
or ebx, dword [esi + ebp*4]
inc ebp
cmp edx, ebp
jne 0x4e6da0
cmp edx, ecx
cmovl ecx, edx
test ecx, ecx
jle 0x4e6e4d
mov eax, dword [esp + 4]
mov esi, dword [eax]
mov edi, dword [esp]
mov edi, dword [edi]
xor ebp, ebp
cmp ecx, 4
jb 0x4e6e40
mov ebp, ecx
and ebp, 0xfffffffc
movd xmm0, ebx
xor eax, eax
nop word cs:[eax + eax]
movdqu xmm1, xmmword [esi + eax*4]
movdqu xmm2, xmmword [edi + eax*4]
pxor xmm2, xmm1
por xmm0, xmm2
add eax, 4
cmp ebp, eax
jne 0x4e6de0
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd ebx, xmm0
jmp 0x4e6e49
mov edx, dword [esp + 0x14]
inc edx
mov edi, dword [esp + 0x30]
cmp edx, dword [edi + 0x10]
mov ebx, dword [esp + 0x40]
jl 0x4e6c40
jmp 0x4e706a
mov eax, dword [edi + ebp*4]
xor eax, dword [esi + ebp*4]
or ebx, eax
inc ebp
cmp ecx, ebp
jne 0x4e6e40
mov eax, dword [esp + 4]
mov esi, dword [eax + 0xc]
mov eax, dword [esp]
mov eax, dword [eax + 0xc]
mov dword [esp + 8], esi
xor eax, esi
or eax, ebx
mov eax, dword [esp + 0xc]
mov esi, 0xffffffff
cmove eax, esi
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x30]
mov esi, dword [eax + 8]
mov ebx, dword [esi + 4]
xor edi, edi
mov eax, edx
sub eax, ebx
mov dword [esp + 0x10], eax
mov dword [esp], esi
jge 0x4e6f09
mov ebp, dword [esi]
mov ecx, ebx
sub ecx, edx
xor edi, edi
mov eax, edx
cmp ecx, 8
jb 0x4e6f00
mov dword [esp + 0x18], ecx
and ecx, 0xfffffff8
lea eax, [edx + ecx]
lea edi, [edx*4 + 0x10]
add edi, ebp
pxor xmm0, xmm0
xor esi, esi
pxor xmm1, xmm1
nop word [eax + eax]
movdqu xmm2, xmmword [edi + esi*4 - 0x10]
por xmm0, xmm2
movdqu xmm2, xmmword [edi + esi*4]
por xmm1, xmm2
add esi, 8
cmp ecx, esi
jne 0x4e6ec0
por xmm1, xmm0
pshufd xmm0, xmm1, 0xee
por xmm0, xmm1
pshufd xmm1, xmm0, 0x55
por xmm1, xmm0
movd edi, xmm1
cmp dword [esp + 0x18], ecx
mov esi, dword [esp]
je 0x4e6f09
nop dword [eax]
or edi, dword [ebp + eax*4]
inc eax
cmp ebx, eax
jne 0x4e6f00
cmp ebx, edx
jge 0x4e6f30
mov ecx, dword [esp + 4]
mov ebp, dword [ecx]
mov eax, dword [esp + 0x10]
cmp eax, 8
jae 0x4e6f40
mov eax, ebx
jmp 0x4e6fb0
mov ecx, dword [esp + 4]
jmp 0x4e6fb9
mov ecx, eax
and ecx, 0xfffffff8
lea eax, [ebx + ecx]
movd xmm1, edi
lea esi, [ebx*4 + 0x10]
add esi, ebp
pxor xmm0, xmm0
xor edi, edi
nop dword [eax + eax]
movdqu xmm2, xmmword [esi + edi*4 - 0x10]
por xmm1, xmm2
movdqu xmm2, xmmword [esi + edi*4]
por xmm0, xmm2
add edi, 8
cmp ecx, edi
jne 0x4e6f60
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd edi, xmm0
cmp dword [esp + 0x10], ecx
mov ecx, dword [esp + 4]
mov esi, dword [esp]
je 0x4e6fb9
nop word cs:[eax + eax]
or edi, dword [ebp + eax*4]
inc eax
cmp edx, eax
jne 0x4e6fb0
cmp edx, ebx
cmovl ebx, edx
test ebx, ebx
jle 0x4e6fe0
mov eax, dword [ecx]
mov esi, dword [esi]
xor ebp, ebp
cmp ebx, 4
jae 0x4e6ff0
mov edx, dword [esp + 8]
jmp 0x4e7040
mov edx, dword [esp + 8]
jmp 0x4e704d
mov ebp, ebx
and ebp, 0xfffffffc
movd xmm0, edi
xor ecx, ecx
nop dword [eax + eax]
movdqu xmm1, xmmword [eax + ecx*4]
movdqu xmm2, xmmword [esi + ecx*4]
pxor xmm2, xmm1
por xmm0, xmm2
add ecx, 4
cmp ebp, ecx
jne 0x4e7000
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd edi, xmm0
cmp ebx, ebp
mov edx, dword [esp + 8]
je 0x4e704d
nop word [eax + eax]
mov ecx, dword [esi + ebp*4]
xor ecx, dword [eax + ebp*4]
or edi, ecx
inc ebp
cmp ebx, ebp
jne 0x4e7040
mov eax, dword [esp]
xor edx, dword [eax + 0xc]
mov ebp, dword [esp + 0xc]
mov eax, ebp
and eax, 1
or eax, edi
or eax, edx
jne 0x4e6e20
mov ebx, dword [esp + 0x40]
mov eax, dword [esp + 0x34]
and ebp, 1
mov dword [eax], ebp
mov edi, 1
cmp byte [ebx + 0x14], 0
jne 0x4e7091
mov eax, dword [ebx + 4]
mov ecx, dword [ebx + 8]
lea edx, [ecx - 1]
mov dword [ebx + 8], edx
mov eax, dword [eax + ecx*4 - 4]
mov dword [ebx + 0x10], eax
mov eax, edi
add esp, 0x1c
pop esi
pop edi
pop ebx
pop ebp
ret
xor edi, edi
cmp byte [ebx + 0x14], 0
jne 0x4e7091
jmp 0x4e707e