Function at 0x4dfcf0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0xc0
mov esi, dword [ebp + 0xc]
mov edi, dword [ebp + 8]
sub esp, 4
push dword [esi]
push edi
call sym.fastboot.exe_EC_GROUP_cmp
add esp, 0xc
test eax, eax
je 0x4dfd3b
push 0xcc
push str.external_boringssl_src_crypto_fipsmodule_ec_oct.c
push 0x6a
push 0
push 0xf
call sym.fastboot.exe_ERR_put_error
add esp, 0x14
xor ebx, ebx
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov edx, dword [ebp + 0x14]
test edx, edx
je 0x4dfe79
mov ecx, dword [ebp + 0x10]
movzx eax, byte [ecx]
cmp eax, 4
jne 0x4dfe8a
pxor xmm0, xmm0
movdqa xmmword [esp + 0xa0], xmm0
movdqa xmmword [esp + 0x90], xmm0
movdqa xmmword [esp + 0x80], xmm0
movdqa xmmword [esp + 0x70], xmm0
movdqa xmmword [esp + 0x60], xmm0
movdqa xmmword [esp + 0x50], xmm0
movdqa xmmword [esp + 0x40], xmm0
movdqa xmmword [esp + 0x30], xmm0
mov dword [esp + 0xb4], 0
mov dword [esp + 0xb0], 0
lea eax, [esp + 0x30]
push edx
push ecx
push eax
push edi
call fcn.004dfb50
add esp, 0x10
lea ecx, [esi + 4]
test eax, eax
je 0x4e0031
mov eax, dword [esp + 0x70]
mov dword [ecx + 0x40], eax
movaps xmm0, xmmword [esp + 0x60]
movups xmmword [ecx + 0x30], xmm0
movaps xmm0, xmmword [esp + 0x50]
movups xmmword [ecx + 0x20], xmm0
movaps xmm0, xmmword [esp + 0x30]
movaps xmm1, xmmword [esp + 0x40]
movups xmmword [ecx + 0x10], xmm1
movups xmmword [ecx], xmm0
mov eax, dword [esp + 0xb4]
mov dword [esi + 0x88], eax
movups xmm0, xmmword [esp + 0xa4]
movups xmmword [esi + 0x78], xmm0
movups xmm0, xmmword [esp + 0x94]
movups xmmword [esi + 0x68], xmm0
movups xmm0, xmmword [esp + 0x74]
movups xmm1, xmmword [esp + 0x84]
movups xmmword [esi + 0x58], xmm1
movups xmmword [esi + 0x48], xmm0
mov eax, dword [edi + 0x154]
mov dword [esi + 0xcc], eax
movups xmm0, xmmword [edi + 0x144]
movups xmmword [esi + 0xbc], xmm0
movups xmm0, xmmword [edi + 0x134]
movups xmmword [esi + 0xac], xmm0
movdqu xmm0, xmmword [edi + 0x114]
movdqu xmm1, xmmword [edi + 0x124]
movdqu xmmword [esi + 0x9c], xmm1
movdqu xmmword [esi + 0x8c], xmm0
mov ebx, 1
jmp 0x4dfd31
push 0x8b
push str.external_boringssl_src_crypto_fipsmodule_ec_oct.c
push 0x64
jmp 0x4dfd23
mov dword [esp + 4], eax
and eax, 1
mov dword [esp + 0x2c], eax
mov eax, dword [edi + 0x28]
xor ebx, ebx
test eax, eax
cmovs ebx, eax
mov edx, eax
nop word cs:[eax + eax]
nop dword [eax + eax]
test edx, edx
jle 0x4dfec4
mov ecx, dword [edi + 0x24]
mov esi, dword [ecx + edx*4 - 4]
add edx, 0xffffffff
test esi, esi
je 0x4dfeb0
jmp 0x4dfeda
xor ecx, ecx
test eax, eax
jns 0x4dff56
mov eax, dword [edi + 0x24]
mov esi, dword [eax + ebx*4 - 4]
add ebx, 0xffffffff
mov edx, ebx
shl edx, 5
mov edi, esi
shr edi, 0x10
xor ebx, ebx
cmp esi, 0x10000
setae bl
cmovb edi, esi
shl ebx, 4
mov eax, edi
shr eax, 8
xor ecx, ecx
cmp edi, 0x100
cmovb eax, edi
setae cl
mov dword [esp + 8], ecx
mov edi, eax
shr edi, 4
xor ecx, ecx
cmp eax, 0x10
cmovb edi, eax
setae cl
mov dword [esp + 0xc], ecx
mov ecx, edi
shr ecx, 2
xor eax, eax
cmp edi, 4
cmovb ecx, edi
mov edi, dword [ebp + 8]
setae al
cmp esi, 1
sbb edx, 0
add edx, 8
or edx, ebx
cmp ecx, 2
mov ecx, dword [esp + 8]
lea ecx, [edx + ecx*8]
mov edx, dword [esp + 0xc]
lea ecx, [ecx + edx*4]
lea ecx, [ecx + eax*2]
sbb ecx, 0xffffffff
shr ecx, 3
mov eax, dword [esp + 4]
and eax, 0xfffffffe
cmp eax, 2
jne 0x4e0020
lea eax, [ecx + 1]
cmp eax, dword [ebp + 0x14]
jne 0x4e0020
mov dword [esp + 0x28], 0
mov eax, dword [ebp + 0x18]
test eax, eax
mov dword [esp + 8], ecx
jne 0x4dffb1
push 0x18
call sym.fastboot.exe_OPENSSL_malloc
add esp, 4
test eax, eax
je 0x4e0142
pxor xmm0, xmm0
movdqu xmmword [eax], xmm0
mov dword [eax + 0x12], 0
mov dword [eax + 0xe], 0
mov dword [esp + 0x28], eax
cmp byte [eax + 0x14], 0
jne 0x4e015c
mov ecx, dword [eax + 8]
mov edx, dword [eax + 0x10]
cmp ecx, dword [eax + 0xc]
jne 0x4e0132
mov esi, eax
lea eax, [ecx + ecx*2]
shr eax, 1
test ecx, ecx
mov ebx, 0x20
cmovne ebx, eax
cmp ebx, ecx
jbe 0x4e0154
cmp ebx, 0x3fffffff
ja 0x4e0154
lea eax, [ebx*4]
push eax
push dword [esi + 4]
mov dword [esp + 0xc], edx
call sym.fastboot.exe_OPENSSL_realloc
mov edx, dword [esp + 0xc]
add esp, 8
test eax, eax
je 0x4e0154
mov dword [esi + 4], eax
mov dword [esi + 0xc], ebx
mov ecx, dword [esi + 8]
jmp 0x4e0137
push 0xa1
push str.external_boringssl_src_crypto_fipsmodule_ec_oct.c
push 0x6d
jmp 0x4dfd23
mov eax, dword [edi + 4]
test eax, eax
je 0x4e00da
mov edx, dword [eax + 0x44]
mov dword [ecx + 0x40], edx
movups xmm0, xmmword [eax + 0x34]
movups xmmword [ecx + 0x30], xmm0
movups xmm0, xmmword [eax + 0x24]
movups xmmword [ecx + 0x20], xmm0
movups xmm0, xmmword [eax + 4]
movups xmm1, xmmword [eax + 0x14]
movups xmmword [ecx + 0x10], xmm1
movups xmmword [ecx], xmm0
mov ecx, dword [eax + 0x88]
mov dword [esi + 0x88], ecx
movups xmm0, xmmword [eax + 0x78]
movups xmmword [esi + 0x78], xmm0
movups xmm0, xmmword [eax + 0x68]
movups xmmword [esi + 0x68], xmm0
movups xmm0, xmmword [eax + 0x48]
movups xmm1, xmmword [eax + 0x58]
movups xmmword [esi + 0x58], xmm1
movups xmmword [esi + 0x48], xmm0
mov ecx, dword [eax + 0xcc]
mov dword [esi + 0xcc], ecx
movups xmm0, xmmword [eax + 0xbc]
movups xmmword [esi + 0xbc], xmm0
movups xmm0, xmmword [eax + 0xac]
movups xmmword [esi + 0xac], xmm0
movdqu xmm0, xmmword [eax + 0x8c]
movdqu xmm1, xmmword [eax + 0x9c]
movdqu xmmword [esi + 0x9c], xmm1
movdqu xmmword [esi + 0x8c], xmm0
jmp 0x4dfd2f
pxor xmm0, xmm0
movdqu xmmword [ecx + 0xbc], xmm0
movdqu xmmword [ecx + 0xb0], xmm0
movdqu xmmword [ecx + 0xa0], xmm0
movdqu xmmword [ecx + 0x90], xmm0
movdqu xmmword [ecx + 0x80], xmm0
movdqu xmmword [ecx + 0x70], xmm0
movdqu xmmword [ecx + 0x60], xmm0
movdqu xmmword [ecx + 0x50], xmm0
movdqu xmmword [ecx + 0x40], xmm0
movdqu xmmword [ecx + 0x30], xmm0
movdqu xmmword [ecx + 0x20], xmm0
movdqu xmmword [ecx + 0x10], xmm0
movdqu xmmword [ecx], xmm0
jmp 0x4dfd2f
mov esi, eax
mov eax, dword [eax + 4]
mov dword [eax + ecx*4], edx
add dword [esi + 8], 1
mov eax, esi
jmp 0x4e015c
push 0x6f
push str.external_boringssl_src_crypto_fipsmodule_bn_ctx.c
push 0x41
push 0
push 3
jmp 0x4dfd27
mov eax, esi
mov word [esi + 0x14], 0x101
mov dword [esp + 0x18], eax
push eax
call sym.fastboot.exe_BN_CTX_get
add esp, 4
xor ebx, ebx
mov dword [esp + 0xc], eax
test eax, eax
je 0x4e01f1
mov eax, dword [esp + 8]
test eax, eax
je 0x4e01fa
lea esi, [eax - 1]
mov ecx, esi
shr ecx, 2
add ecx, 1
mov dword [esp + 4], ecx
push ecx
push dword [esp + 0x10]
call fcn.004b36f0
add esp, 8
test eax, eax
mov eax, dword [esp + 0x18]
je 0x4e05e2
mov eax, dword [esp + 4]
mov ecx, dword [esp + 0xc]
mov dword [ecx + 4], eax
mov dword [ecx + 0xc], 0
and esi, 3
xor ecx, ecx
mov eax, dword [esp + 8]
cmp eax, 1
jne 0x4e02b1
mov edx, dword [ebp + 0x10]
test byte [esp + 8], 1
mov ebx, dword [esp + 0xc]
je 0x4e01ec
test esi, esi
jne 0x4e01ec
shl ecx, 8
movzx eax, byte [edx + 1]
or eax, ecx
mov ecx, dword [ebx]
mov edx, dword [esp + 4]
mov dword [ecx + edx*4 - 4], eax
mov eax, dword [ebx + 4]
jmp 0x4e0207
mov eax, dword [esp + 0x18]
jmp 0x4e05e2
mov ebx, dword [esp + 0xc]
mov dword [ebx + 4], 0
xor eax, eax
mov ebx, dword [ebx]
mov ecx, dword [edi + 0x24]
mov esi, dword [edi + 0x28]
mov dword [esp + 0x14], esi
cmp eax, esi
mov edx, esi
cmovb edx, eax
test edx, edx
mov dword [esp + 0x24], eax
mov dword [esp + 4], ecx
je 0x4e0262
xor esi, esi
xor edi, edi
mov dword [esp + 8], ebx
nop
mov ecx, dword [ebx + edi*4]
mov eax, edx
mov edx, dword [esp + 4]
mov edx, dword [edx + edi*4]
mov ebx, ecx
sub ebx, edx
xor edx, ecx
xor ebx, ecx
or ebx, edx
xor ebx, ecx
sar ebx, 0x1f
or ebx, 1
test edx, edx
mov edx, eax
cmovne esi, ebx
mov ebx, dword [esp + 8]
add edi, 1
cmp eax, edi
jne 0x4e0230
jmp 0x4e0264
xor esi, esi
mov dword [esp + 0x10], esi
mov ecx, dword [esp + 0x24]
mov eax, ecx
mov edx, dword [esp + 0x14]
sub eax, edx
jae 0x4e0291
mov eax, edx
sub eax, ecx
xor esi, esi
cmp eax, 8
jae 0x4e0321
mov edi, dword [ebp + 8]
mov eax, dword [esp + 0x10]
jmp 0x4e0473
jbe 0x4e035e
xor esi, esi
cmp eax, 8
mov dword [esp + 8], ebx
jae 0x4e036d
mov ebx, dword [ebp + 0xc]
mov edi, dword [ebp + 8]
jmp 0x4e0575
and eax, 0xfffffffe
xor ecx, ecx
mov edx, dword [ebp + 0x10]
jmp 0x4e02c9
mov edx, ebx
add edx, 2
add eax, 0xfffffffe
je 0x4e01ca
shl ecx, 8
mov ebx, edx
movzx edx, byte [edx + 1]
or edx, ecx
sub esi, 1
jae 0x4e02f5
mov ecx, dword [esp + 0xc]
mov ecx, dword [ecx]
mov esi, dword [esp + 4]
mov dword [ecx + esi*4 - 4], edx
add esi, 0xffffffff
mov dword [esp + 4], esi
xor edx, edx
mov esi, 3
shl edx, 8
movzx ecx, byte [ebx + 2]
or ecx, edx
sub esi, 1
jae 0x4e02bb
mov edx, dword [esp + 0xc]
mov edx, dword [edx]
mov esi, dword [esp + 4]
mov dword [edx + esi*4 - 4], ecx
add esi, 0xffffffff
mov dword [esp + 4], esi
xor ecx, ecx
mov esi, 3
jmp 0x4e02bb
mov edi, eax
and edi, 0xfffffff8
lea edx, [edi - 8]
mov esi, edx
shr esi, 3
add esi, 1
mov ebx, esi
and ebx, 3
cmp edx, 0x18
mov dword [esp + 8], eax
mov dword [esp + 0x20], edi
mov dword [esp + 0x1c], ebx
jae 0x4e03a4
pxor xmm0, xmm0
xor edi, edi
pxor xmm1, xmm1
mov eax, dword [esp + 0x10]
mov edx, dword [esp + 4]
jmp 0x4e0416
mov ebx, dword [ebp + 0xc]
mov edi, dword [ebp + 8]
mov eax, dword [esp + 0x10]
jmp 0x4e059e
mov dword [esp + 4], eax
and eax, 0xfffffff8
mov dword [esp + 0x20], eax
lea ecx, [eax - 8]
mov ebx, ecx
shr ebx, 3
add ebx, 1
mov eax, ebx
and eax, 3
mov dword [esp + 0x1c], eax
cmp ecx, 0x18
jae 0x4e04a2
pxor xmm0, xmm0
xor esi, esi
pxor xmm1, xmm1
jmp 0x4e0510
and esi, 0xfffffffc
mov edx, dword [esp + 4]
lea ebx, [edx + ecx*4]
add ebx, 0x70
pxor xmm0, xmm0
xor edi, edi
pxor xmm1, xmm1
mov eax, dword [esp + 0x10]
movdqu xmm2, xmmword [ebx + edi*4 - 0x70]
por xmm2, xmm0
movdqu xmm0, xmmword [ebx + edi*4 - 0x60]
por xmm0, xmm1
movdqu xmm1, xmmword [ebx + edi*4 - 0x50]
movdqu xmm3, xmmword [ebx + edi*4 - 0x40]
movdqu xmm4, xmmword [ebx + edi*4 - 0x30]
por xmm4, xmm1
por xmm4, xmm2
movdqu xmm2, xmmword [ebx + edi*4 - 0x20]
por xmm2, xmm3
por xmm2, xmm0
movdqu xmm0, xmmword [ebx + edi*4 - 0x10]
por xmm0, xmm4
movdqu xmm1, xmmword [ebx + edi*4]
por xmm1, xmm2
add edi, 0x20
add esi, 0xfffffffc
jne 0x4e03bf
mov ebx, dword [esp + 0x1c]
test ebx, ebx
je 0x4e0445
add edi, ecx
lea esi, [edx + edi*4]
add esi, 0x10
shl ebx, 5
xor edi, edi
movdqu xmm2, xmmword [esi + edi - 0x10]
por xmm0, xmm2
movdqu xmm2, xmmword [esi + edi]
por xmm1, xmm2
add edi, 0x20
cmp ebx, edi
jne 0x4e042b
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd esi, xmm0
mov edi, dword [esp + 0x20]
cmp dword [esp + 8], edi
jne 0x4e046e
mov edi, dword [ebp + 8]
jmp 0x4e048a
add ecx, edi
mov edi, dword [ebp + 8]
mov edx, dword [esp + 0x14]
mov ebx, dword [esp + 4]
nop dword [eax + eax]
or esi, dword [ebx + ecx*4]
add ecx, 1
cmp edx, ecx
jne 0x4e0480
mov ecx, esi
not ecx
add esi, 0xffffffff
and esi, ecx
sar esi, 0x1f
not esi
or eax, esi
mov ebx, dword [ebp + 0xc]
jmp 0x4e059e
and ebx, 0xfffffffc
mov eax, dword [esp + 8]
lea edi, [eax + edx*4]
add edi, 0x70
pxor xmm0, xmm0
xor esi, esi
pxor xmm1, xmm1
movdqu xmm2, xmmword [edi + esi*4 - 0x70]
por xmm2, xmm0
movdqu xmm0, xmmword [edi + esi*4 - 0x60]
por xmm0, xmm1
movdqu xmm1, xmmword [edi + esi*4 - 0x50]
movdqu xmm3, xmmword [edi + esi*4 - 0x40]
movdqu xmm4, xmmword [edi + esi*4 - 0x30]
por xmm4, xmm1
por xmm4, xmm2
movdqu xmm2, xmmword [edi + esi*4 - 0x20]
por xmm2, xmm3
por xmm2, xmm0
movdqu xmm0, xmmword [edi + esi*4 - 0x10]
por xmm0, xmm4
movdqu xmm1, xmmword [edi + esi*4]
por xmm1, xmm2
add esi, 0x20
add ebx, 0xfffffffc
jne 0x4e04b9
mov ecx, dword [esp + 0x1c]
test ecx, ecx
je 0x4e0543
add esi, edx
mov eax, dword [esp + 8]
lea esi, [eax + esi*4]
add esi, 0x10
shl ecx, 5
xor edi, edi
movdqu xmm2, xmmword [esi + edi - 0x10]
por xmm0, xmm2
movdqu xmm2, xmmword [esi + edi]
por xmm1, xmm2
add edi, 0x20
cmp ecx, edi
jne 0x4e0529
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd esi, xmm0
mov eax, dword [esp + 0x20]
cmp dword [esp + 4], eax
mov ebx, dword [ebp + 0xc]
mov edi, dword [ebp + 8]
mov ecx, dword [esp + 0x24]
je 0x4e0587
add dword [esp + 0x14], eax
mov edx, dword [esp + 0x14]
mov eax, dword [esp + 8]
or esi, dword [eax + edx*4]
add edx, 1
cmp ecx, edx
jne 0x4e057d
mov ecx, esi
not ecx
add esi, 0xffffffff
and esi, ecx
sar esi, 0x1f
mov eax, dword [esp + 0x10]
and eax, esi
add eax, esi
add eax, 1
test eax, eax
js 0x4e05c2
push 0xb9
push str.external_boringssl_src_crypto_fipsmodule_ec_oct.c
push 0x6d
push 0
push 0xf
call sym.fastboot.exe_ERR_put_error
add esp, 0x14
xor ebx, ebx
mov eax, dword [esp + 0x18]
jmp 0x4e05e2
mov esi, dword [esp + 0x18]
push esi
push dword [esp + 0x30]
push dword [esp + 0x14]
push ebx
push edi
call sym.fastboot.exe_EC_POINT_set_compressed_coordinates_GFp
add esp, 0x14
xor ebx, ebx
test eax, eax
mov eax, esi
setne bl
cmp byte [eax + 0x14], 0
jne 0x4e05fd
mov esi, eax
mov eax, dword [eax + 4]
mov ecx, dword [esi + 8]
lea edx, [ecx - 1]
mov dword [esi + 8], edx
mov eax, dword [eax + ecx*4 - 4]
mov dword [esi + 0x10], eax
mov esi, dword [esp + 0x28]
test esi, esi
je 0x4dfd31
push sym.fastboot.exe_BN_free
push 0x4fa650
push dword [esi]
call sym.fastboot.exe_sk_pop_free_ex
add esp, 0xc
push dword [esi + 4]
call sym.fastboot.exe_OPENSSL_free
add esp, 4
push esi
call sym.fastboot.exe_OPENSSL_free
add esp, 4
jmp 0x4dfd31