Function at 0x4807a0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x80
mov edi, dword [ebp + 0x14]
mov ecx, dword [ebp + 0x10]
xorps xmm0, xmm0
mov eax, dword [ebp + 0x1c]
movaps xmmword [esp + 0x20], xmm0
test edi, edi
cmove edi, ecx
mov ecx, dword [ecx + 4]
cmp eax, 0xffffffff
mov edx, ecx
je 0x4807f6
cmp eax, 0xfffffffe
jne 0x4807db
mov edx, 0xfffffffe
jmp 0x4807f6
cmp eax, 0xfffffffd
mov edx, eax
jg 0x4807f6
push 0x202
push str.external_boringssl_src_crypto_fipsmodule_rsa_padding.c
push 0x8a
jmp 0x480aa3
mov ebx, dword [ebp + 8]
mov dword [esp + 0x10], ecx
mov dword [esp + 0x38], edx
mov ecx, dword [ebx + 4]
mov edx, dword [ecx + 4]
nop word [eax + eax]
test edx, edx
jle 0x480821
mov esi, dword [ecx]
mov esi, dword [esi + edx*4 - 4]
dec edx
test esi, esi
je 0x480810
jmp 0x48082d
je 0x480a6e
mov esi, dword [ecx]
mov esi, dword [esi + edx*4 - 4]
xor edx, edx
test esi, esi
mov ebx, esi
setne dl
shr ebx, 0x10
mov eax, ebx
xor ebx, esi
neg eax
sar eax, 0x1f
and ebx, eax
xor ebx, esi
mov eax, ebx
shr eax, 8
mov esi, eax
xor eax, ebx
neg esi
sar esi, 0x1f
and eax, esi
xor eax, ebx
mov esi, eax
shr esi, 4
mov ebx, esi
xor esi, eax
neg ebx
sar ebx, 0x1f
and esi, ebx
and ebx, 4
xor esi, eax
or ebx, edx
mov eax, esi
shr eax, 2
mov edx, eax
xor eax, esi
neg edx
sar edx, 0x1f
and eax, edx
and edx, 2
xor eax, esi
or edx, ebx
mov ebx, dword [ebp + 8]
shr eax, 1
neg eax
shr eax, 0x1f
lea eax, [eax + edx - 1]
and eax, 7
mov dword [esp + 0x1c], eax
mov eax, dword [ebx]
mov edx, dword [eax + 0x14]
test edx, edx
je 0x4808a9
push ebx
call edx
jmp 0x4808af
push ecx
call sym.fastboot.exe_BN_num_bytes
add esp, 4
mov ebx, dword [ebp + 0x18]
mov ecx, dword [esp + 0x1c]
mov edx, 0xff
movzx esi, byte [ebx]
shl edx, cl
test edx, esi
je 0x4808d8
push 0x209
push str.external_boringssl_src_crypto_fipsmodule_rsa_padding.c
push 0x7a
jmp 0x480aa3
mov edx, eax
xor eax, eax
test ecx, ecx
mov ecx, dword [esp + 0x10]
lea esi, [ebx + 1]
sete al
cmovne esi, ebx
mov dword [esp + 0x34], edx
mov dword [esp + 0x18], eax
sub edx, eax
lea eax, [ecx + 2]
cmp edx, eax
mov eax, dword [esp + 0x38]
jl 0x480a7b
lea eax, [ecx + eax + 2]
cmp edx, eax
jl 0x480a7b
cmp byte [esi + edx - 1], 0xbc
jne 0x480a89
mov eax, ecx
not eax
add edx, eax
push edx
mov ebx, edx
call sym.fastboot.exe_OPENSSL_malloc
add esp, 4
test eax, eax
je 0x480a97
lea ecx, [esi + ebx]
mov dword [esp + 8], eax
mov edx, ebx
mov dword [esp + 0x14], ecx
mov ecx, eax
push edi
push dword [esp + 0x14]
push dword [esp + 0x1c]
call fcn.004802e0
add esp, 0xc
test eax, eax
je 0x480ae3
neg dword [esp + 0x18]
test ebx, ebx
mov dword [esp + 0xc], ebx
jle 0x4809fc
xor eax, eax
cmp dword [esp + 0xc], 0x20
mov ecx, 0
jb 0x4809d3
mov ecx, dword [esp + 0x14]
cmp dword [esp + 8], ecx
jae 0x480998
mov ecx, dword [esp + 8]
mov edx, dword [esp + 0xc]
lea ecx, [ecx + edx]
cmp esi, ecx
mov ecx, 0
jb 0x4809d3
mov ecx, dword [esp + 0xc]
mov edi, dword [esp + 8]
xor edx, edx
and ecx, 0xffffffe0
movups xmm0, xmmword [esi + edx]
movups xmm2, xmmword [edi + edx]
movups xmm1, xmmword [esi + edx + 0x10]
movups xmm3, xmmword [edi + edx + 0x10]
xorps xmm2, xmm0
xorps xmm3, xmm1
movups xmmword [edi + edx], xmm2
movups xmmword [edi + edx + 0x10], xmm3
add edx, 0x20
cmp ecx, edx
jne 0x4809a5
cmp dword [esp + 0xc], ecx
je 0x4809fc
mov edx, dword [esp + 0x34]
mov edi, dword [esp + 0x18]
add esi, ecx
lea edi, [edx + edi - 1]
mov edx, dword [esp + 8]
sub edi, ecx
sub edi, dword [esp + 0x10]
lea ecx, [edx + ecx]
nop
movzx edx, byte [esi + eax]
xor byte [ecx + eax], dl
inc eax
cmp edi, eax
jne 0x4809f0
mov eax, dword [esp + 0x1c]
mov edi, dword [esp + 8]
test eax, eax
je 0x480a15
mov cl, 8
sub cl, al
mov eax, 0xff
shr eax, cl
and byte [edi], al
mov eax, dword [esp + 0xc]
mov edx, dword [esp + 0x38]
xor esi, esi
dec eax
movzx ecx, byte [edi + esi]
cmp esi, eax
lea esi, [esi + 1]
jge 0x480a2f
test cl, cl
je 0x480a20
cmp cl, 1
jne 0x480aeb
test edx, edx
js 0x480b0a
mov eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x18]
lea eax, [eax + ecx - 1]
sub eax, edx
sub eax, dword [esp + 0x10]
cmp eax, esi
je 0x480b0a
push 0x231
push str.external_boringssl_src_crypto_fipsmodule_rsa_padding.c
push 0x8a
jmp 0x480afa
mov dword [esp + 0x1c], 7
jmp 0x48089b
push 0x212
push str.external_boringssl_src_crypto_fipsmodule_rsa_padding.c
push 0x71
jmp 0x480aa3
push 0x216
push str.external_boringssl_src_crypto_fipsmodule_rsa_padding.c
push 0x7f
jmp 0x480aa3
push 0x21d
push str.external_boringssl_src_crypto_fipsmodule_rsa_padding.c
push 0x41
push 0
push 4
call sym.fastboot.exe_ERR_put_error
add esp, 0x14
xor ebx, ebx
xor edi, edi
push edi
call sym.fastboot.exe_OPENSSL_free
add esp, 4
push dword [esp + 0x24]
call sym.fastboot.exe_OPENSSL_free
add esp, 4
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x480ad9
push dword [esp + 0x28]
call dword [eax]
add esp, 4
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
xor ebx, ebx
mov edi, dword [esp + 8]
jmp 0x480ab3
push 0x22d
push str.external_boringssl_src_crypto_fipsmodule_rsa_padding.c
push 0x8b
push 0
push 4
call sym.fastboot.exe_ERR_put_error
add esp, 0x14
xor ebx, ebx
jmp 0x480ab3
sub esp, 4
lea eax, [esp + 0x24]
push dword [ebp + 0x10]
push eax
call sym.fastboot.exe_EVP_DigestInit_ex
add esp, 0xc
xor ebx, ebx
test eax, eax
je 0x480ab3
mov eax, dword [esp + 0xc]
sub eax, esi
mov dword [esp + 0xc], eax
mov eax, dword [esp + 0x20]
push 8
push 0x5227ff
lea ecx, [esp + 0x28]
push ecx
call dword [eax + 0x10]
add esp, 0xc
mov eax, dword [esp + 0x20]
push dword [esp + 0x10]
push dword [ebp + 0xc]
lea ecx, [esp + 0x28]
push ecx
call dword [eax + 0x10]
add esp, 0xc
mov ecx, dword [esp + 0x20]
add edi, esi
push dword [esp + 0xc]
push edi
lea edi, [esp + 0x28]
push edi
call dword [ecx + 0x10]
add esp, 0xc
mov eax, dword [esp + 0x20]
lea esi, [esp + 0x3c]
push esi
push edi
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
mov eax, dword [esp + 0x18]
add esp, 8
test eax, eax
je 0x480bc9
push eax
push dword [esp + 0x18]
push esi
call sub.msvcrt.dll_memcmp
add esp, 0xc
test eax, eax
je 0x480bc9
push 0x23c
push str.external_boringssl_src_crypto_fipsmodule_rsa_padding.c
push 0x69
push 0
push 4
call sym.fastboot.exe_ERR_put_error
add esp, 0x14
jmp 0x480ae5
mov ebx, 1
jmp 0x480ae5