Function at 0x5affa0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x14
mov eax, dword [edx + 4]
test eax, eax
je 0x5b00d3
mov edi, edx
mov ebp, ecx
mov ecx, dword [edx]
xor ebx, ebx
mov edx, 0
cmp eax, 8
jb 0x5b00b0
lea esi, [eax - 8]
mov ebx, esi
shr ebx, 3
inc ebx
mov edx, ebx
and edx, 3
cmp esi, 0x18
mov dword [esp], ebp
jae 0x5affea
pxor xmm0, xmm0
xor ebp, ebp
pxor xmm1, xmm1
jmp 0x5b0057
and ebx, 0xfffffffc
pxor xmm0, xmm0
xor ebp, ebp
pxor xmm1, xmm1
nop word [eax + eax]
movdqu xmm2, xmmword [ecx + ebp*4]
por xmm2, xmm0
movdqu xmm0, xmmword [ecx + ebp*4 + 0x10]
por xmm0, xmm1
movdqu xmm1, xmmword [ecx + ebp*4 + 0x20]
movdqu xmm3, xmmword [ecx + ebp*4 + 0x30]
movdqu xmm4, xmmword [ecx + ebp*4 + 0x40]
por xmm4, xmm1
por xmm4, xmm2
movdqu xmm2, xmmword [ecx + ebp*4 + 0x50]
por xmm2, xmm3
por xmm2, xmm0
movdqu xmm0, xmmword [ecx + ebp*4 + 0x60]
por xmm0, xmm4
movdqu xmm1, xmmword [ecx + ebp*4 + 0x70]
por xmm1, xmm2
add ebp, 0x20
add ebx, 0xfffffffc
jne 0x5b0000
mov ebx, eax
and ebx, 0xfffffff8
test edx, edx
je 0x5b008a
lea esi, [ecx + ebp*4]
add esi, 0x10
shl edx, 5
xor ebp, ebp
nop dword [eax + eax]
movdqu xmm2, xmmword [esi + ebp - 0x10]
por xmm0, xmm2
movdqu xmm2, xmmword [esi + ebp]
por xmm1, xmm2
add ebp, 0x20
cmp edx, ebp
jne 0x5b0070
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd edx, xmm0
cmp eax, ebx
mov ebp, dword [esp]
je 0x5b00b8
nop dword [eax + eax]
or edx, dword [ecx + ebx*4]
inc ebx
cmp eax, ebx
jne 0x5b00b0
test edx, edx
je 0x5b00d3
test eax, eax
jle 0x5b00c5
test byte [ecx], 1
jne 0x5b00f5
push 0xa9
push str.external_boringssl_src_crypto_fipsmodule_bn_montgomery.c
push 0x68
jmp 0x5b00df
push 0xa5
push str.external_boringssl_src_crypto_fipsmodule_bn_montgomery.c
push 0x69
push 0
push 3
call sym.adb.exe_ERR_put_error
add esp, 0x14
xor eax, eax
add esp, 0x14
pop esi
pop edi
pop ebx
pop ebp
ret
cmp dword [edi + 0xc], 0
je 0x5b0109
push 0xad
push str.external_boringssl_src_crypto_fipsmodule_bn_montgomery.c
push 0x6d
jmp 0x5b00df
lea ebx, [ebp + 0x14]
cmp ebx, edi
je 0x5b014b
push eax
push ebx
call fcn.0059f5c0
add esp, 8
test eax, eax
je 0x5b0224
mov eax, dword [edi + 4]
lea ecx, [eax*4]
test ecx, ecx
je 0x5b0140
push ecx
push dword [edi]
push dword [ebx]
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
add esp, 0xc
mov eax, dword [edi + 4]
mov dword [ebp + 0x18], eax
mov ecx, dword [edi + 0xc]
mov dword [ebp + 0x20], ecx
jmp 0x5b014e
mov eax, dword [ebp + 0x18]
mov ecx, eax
sar ecx, 0x1f
and ecx, eax
mov esi, eax
mov dword [esp], ebp
nop word [eax + eax]
test esi, esi
jle 0x5b0182
mov edx, dword [ebx]
lea edi, [esi - 1]
cmp dword [edx + esi*4 - 4], 0
mov esi, edi
je 0x5b0160
inc edi
mov dword [ebp + 0x18], edi
mov ecx, dword [edx]
cmp edi, 2
jb 0x5b0194
mov eax, dword [edx + 4]
jmp 0x5b0196
mov dword [ebp + 0x18], ecx
test eax, eax
js 0x5b0190
mov dword [ebp + 0x20], 0
mov eax, dword [ebx]
mov ecx, dword [eax]
xor eax, eax
xor edi, edi
mov esi, 1
mov edx, 0x40
mov dword [esp + 4], 0
xor ebx, ebx
mov ebp, esi
mov dword [esp + 0xc], ecx
mov dword [esp + 8], eax
nop word cs:[eax + eax]
mov dword [esp + 0x10], edx
and ebp, 1
neg ebp
mov edx, 0
sbb edx, edx
mov eax, dword [esp + 8]
and eax, edx
and ebp, ecx
mov ecx, eax
xor ecx, edi
and eax, edi
mov edi, ebp
xor edi, esi
and ebp, esi
shrd edi, ecx, 1
shr ecx, 1
add ebp, edi
adc eax, ecx
mov ecx, dword [esp + 0xc]
and edx, 0x80000000
shrd dword [esp + 4], ebx, 1
shr ebx, 1
or ebx, edx
mov edx, dword [esp + 0x10]
mov esi, ebp
mov edi, eax
dec edx
jne 0x5b01c0
mov eax, dword [esp]
mov ecx, dword [esp + 4]
mov dword [eax + 0x28], ecx
mov dword [eax + 0x2c], ebx
mov eax, 1
jmp 0x5b00ed
push 0xb3
push str.external_boringssl_src_crypto_fipsmodule_bn_montgomery.c
push 0x44
jmp 0x5b00df