Function at 0x457ad0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x10
mov edx, dword [esp + 0x30]
mov ecx, dword [esp + 0x2c]
mov ebp, dword [edx + 4]
mov eax, dword [edx]
lea edi, [ebp*4 + 4]
nop dword [eax + eax]
test ebp, ebp
je 0x457b72
mov ebx, ebp
dec ebp
add edi, 0xfffffffc
mov esi, dword [eax + ebx*4 - 4]
test esi, esi
je 0x457af0
test ebp, ebp
jne 0x457b0a
cmp dword [eax], ecx
jbe 0x457b72
lea eax, [ebp + 1]
mov dword [esp + 4], eax
push eax
push dword [esp + 0x28]
call fcn.00444800
add esp, 8
xor ecx, ecx
test eax, eax
je 0x457b8c
mov eax, esi
shr eax, 1
or eax, esi
mov ecx, eax
shr ecx, 2
or ecx, eax
mov eax, ecx
shr eax, 4
or eax, ecx
mov ecx, eax
shr ecx, 8
or ecx, eax
mov eax, dword [esp + 0x2c]
mov esi, ecx
shr esi, 0x10
or esi, ecx
mov ecx, esi
shr ecx, 1
test ebp, ebp
jne 0x457b96
cmp ecx, eax
jae 0x457b96
push 0x137
push str.external_boringssl_src_crypto_fipsmodule_bn_random.c
push 0x6c
push 0
push 3
call sym.adb.exe_ERR_put_error
xor ecx, ecx
add esp, 0x14
jmp 0x457b8c
push 0xe2
push str.external_boringssl_src_crypto_fipsmodule_bn_random.c
push 0x6c
push 0
push 3
call sym.adb.exe_ERR_put_error
add esp, 0x14
xor ecx, ecx
mov eax, ecx
add esp, 0x10
pop esi
pop edi
pop ebx
pop ebp
ret
mov dword [esp + 8], ecx
push 0x58e277
push edi
mov eax, dword [esp + 0x2c]
mov edi, eax
push dword [eax]
call fcn.00458f00
mov ecx, dword [esp + 0x38]
mov edx, ecx
add esp, 0xc
mov eax, dword [edi]
mov ecx, dword [esp + 0x30]
and dword [eax + ebx*4 - 4], esi
test edx, edx
mov eax, dword [edi]
mov ecx, dword [ecx]
mov dword [esp + 0xc], ecx
je 0x457be2
test ebp, ebp
je 0x457bf0
cmp ebp, 7
ja 0x457bf4
mov edi, dword [esp + 4]
xor esi, esi
mov edx, 1
jmp 0x457c50
mov edx, eax
mov dword [esp], 0xffffffff
jmp 0x457c83
xor esi, esi
jmp 0x457c58
mov ecx, ebp
lea esi, [eax + 0x14]
pxor xmm0, xmm0
pxor xmm1, xmm1
and ecx, 0xfffffff8
lea edx, [ecx + 1]
mov edi, ecx
nop dword [eax]
movdqu xmm2, xmmword [esi - 0x10]
movdqu xmm3, xmmword [esi]
add esi, 0x20
add edi, 0xfffffff8
por xmm0, xmm2
por xmm1, xmm3
jne 0x457c10
por xmm1, xmm0
mov edi, dword [esp + 4]
cmp ebp, ecx
pshufd xmm0, xmm1, 0x4e
por xmm0, xmm1
pshufd xmm1, xmm0, 0xe5
por xmm1, xmm0
movd esi, xmm1
je 0x457c58
nop dword [eax + eax]
or esi, dword [eax + edx*4]
inc edx
cmp edi, edx
jne 0x457c50
mov edi, dword [eax]
mov edx, eax
mov eax, dword [esp + 0x2c]
mov ecx, esi
dec esi
not ecx
mov dword [esp], ecx
mov ebp, edi
mov ecx, edi
sub ebp, eax
xor ecx, eax
xor ebp, edi
or ebp, ecx
xor ebp, edi
and ebp, dword [esp]
and ebp, esi
sar ebp, 0x1f
not ebp
mov dword [esp], ebp
xor esi, esi
xor edi, edi
mov eax, edx
nop dword [eax]
mov edx, dword [esp + 0xc]
mov ecx, dword [eax + edi*4]
mov edx, dword [edx + edi*4]
mov ebp, ecx
sub ebp, edx
xor edx, ecx
xor ebp, ecx
or ebp, edx
xor ebp, ecx
sar ebp, 0x1f
mov ecx, ebp
not ecx
and ecx, 1
or ecx, ebp
mov ebp, edx
dec edx
xor ebp, 0x80000000
test edx, ebp
cmovns esi, ecx
inc edi
cmp dword [esp + 4], edi
jne 0x457c90
mov ecx, dword [esp + 0x2c]
shr esi, 0x1f
mov eax, dword [esp + 0x28]
and esi, dword [esp]
mov edi, ecx
mov ecx, dword [esp + 0x24]
mov dword [eax], esi
mov eax, esi
dec esi
and edi, esi
neg eax
mov edx, ecx
mov ecx, dword [ecx]
or dword [ecx], edi
mov ecx, 1
and esi, dword [esp + 8]
or esi, eax
mov eax, dword [edx]
and dword [eax + ebx*4 - 4], esi
mov dword [edx + 0xc], 0
mov eax, dword [esp + 4]
mov dword [edx + 4], eax
jmp 0x457b8c