Function at 0x5c04f0
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0xc
mov ebp, dword [esp + 0x2c]
mov ebx, dword [esp + 0x24]
mov ecx, dword [esp + 0x20]
mov edx, dword [ecx + 0xc]
mov esi, edx
sar esi, 0x1f
and esi, edx
mov dword [esp + 4], edx
nop word cs:[eax + eax]
test edx, edx
jle 0x5c0532
mov eax, dword [ecx + 8]
mov edi, dword [eax + edx*4 - 4]
dec edx
test edi, edi
je 0x5c0520
jmp 0x5c0549
xor eax, eax
cmp dword [esp + 4], 0
jns 0x5c05c0
mov eax, dword [ecx + 8]
mov edi, dword [eax + esi*4 - 4]
dec esi
mov edx, esi
shl edx, 5
mov ecx, edi
shr ecx, 0x10
xor ebx, ebx
cmp edi, 0x10000
setae bl
cmovb ecx, edi
shl ebx, 4
mov esi, ecx
shr esi, 8
xor eax, eax
cmp ecx, 0x100
setae al
mov dword [esp], eax
cmovb esi, ecx
mov ebp, esi
shr ebp, 4
xor ecx, ecx
cmp esi, 0x10
cmovb ebp, esi
setae cl
mov esi, ebp
shr esi, 2
xor eax, eax
cmp ebp, 4
cmovb esi, ebp
mov ebp, dword [esp + 0x2c]
setae al
cmp edi, 1
sbb edx, 0
add edx, 8
or edx, ebx
mov ebx, dword [esp + 0x24]
cmp esi, 2
mov esi, dword [esp]
lea edx, [edx + esi*8]
lea ecx, [edx + ecx*4]
lea eax, [ecx + eax*2]
sbb eax, 0xffffffff
shr eax, 3
mov ecx, 0x40
cmp eax, ebp
jne 0x5c0830
mov ecx, 0x47
mov esi, dword [esp + 4]
test esi, esi
je 0x5c0830
lea ecx, [esi - 1]
mov eax, ebp
shr eax, 2
cmp ecx, eax
mov edx, eax
cmovb edx, ecx
mov edi, ebp
xor ebp, ebp
cmp edx, 0x14
jae 0x5c0604
mov dword [esp], edi
xor edx, edx
mov edi, dword [esp + 0x28]
jmp 0x5c0700
cmp ecx, eax
cmovb eax, ecx
mov ecx, edi
mov edi, dword [esp + 0x28]
add ecx, edi
cmp ecx, ebx
jbe 0x5c0640
lea ecx, [ebx + eax*4]
add ecx, 4
shl eax, 2
mov esi, dword [esp + 0x2c]
sub esi, eax
lea eax, [esi + edi]
add eax, 0xfffffffc
cmp eax, ecx
jae 0x5c0640
mov eax, dword [esp + 0x2c]
mov dword [esp], eax
xor edx, edx
mov esi, dword [esp + 4]
jmp 0x5c0700
lea esi, [edx + 1]
mov eax, esi
and eax, 7
mov ecx, 8
cmovne ecx, eax
sub esi, ecx
mov dword [esp + 8], esi
lea eax, [esi*4]
mov esi, dword [esp + 0x2c]
add edi, esi
add edi, 0xfffffff0
sub esi, eax
mov dword [esp], esi
lea esi, [ebx + 0x10]
not edx
add edx, ecx
xor ebx, ebx
pxor xmm0, xmm0
nop dword [eax + eax]
movdqu xmm1, xmmword [edi + ebx*4 - 0x10]
movdqu xmm2, xmmword [edi + ebx*4]
pshufd xmm2, xmm2, 0x1b
pshufd xmm1, xmm1, 0x1b
movdqa xmm3, xmm2
punpckhbw xmm3, xmm0
pshuflw xmm3, xmm3, 0x1b
pshufhw xmm3, xmm3, 0x1b
punpcklbw xmm2, xmm0
pshuflw xmm2, xmm2, 0x1b
pshufhw xmm2, xmm2, 0x1b
packuswb xmm2, xmm3
movdqa xmm3, xmm1
punpckhbw xmm3, xmm0
pshuflw xmm3, xmm3, 0x1b
pshufhw xmm3, xmm3, 0x1b
punpcklbw xmm1, xmm0
pshuflw xmm1, xmm1, 0x1b
pshufhw xmm1, xmm1, 0x1b
packuswb xmm1, xmm3
movdqu xmmword [esi - 0x10], xmm2
movdqu xmmword [esi], xmm1
add esi, 0x20
add ebx, 0xfffffff8
cmp edx, ebx
jne 0x5c0680
mov ebx, dword [esp + 0x24]
mov esi, dword [esp + 4]
mov edi, dword [esp + 0x28]
mov edx, dword [esp + 8]
mov eax, dword [esp]
add eax, edi
add eax, 0xfffffffc
mov dword [esp + 8], edx
nop dword [eax]
mov ecx, dword [esp]
add ecx, ebp
cmp ecx, 3
jbe 0x5c072c
mov ecx, dword [eax + ebp]
bswap ecx
mov dword [ebx + edx*4], ecx
inc edx
add ebp, 0xfffffffc
cmp esi, edx
jne 0x5c0710
jmp 0x5c0784
add dword [esp], ebp
je 0x5c0752
xor eax, eax
xor esi, esi
mov ebx, edi
mov edi, dword [esp]
nop word [eax + eax]
shl esi, 8
movzx ecx, byte [ebx + eax]
or ecx, esi
inc eax
mov esi, ecx
cmp eax, edi
jb 0x5c0740
jmp 0x5c0754
xor ecx, ecx
mov eax, dword [esp + 0x24]
mov dword [eax + edx*4], ecx
mov ecx, dword [esp + 4]
shl ecx, 2
mov esi, dword [esp + 8]
shl esi, 2
sub ecx, esi
add ecx, ebp
add ecx, 0xfffffffc
je 0x5c0784
lea eax, [eax + edx*4]
add eax, 4
push ecx
push 0
push eax
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
add esp, 0xc
mov eax, dword [esp + 0x20]
mov ebx, dword [eax + 0xc]
test ebx, ebx
je 0x5c07a1
mov ecx, dword [eax + 8]
cmp ebx, 1
mov dword [esp + 4], ebx
jne 0x5c07ab
xor eax, eax
xor edi, edi
jmp 0x5c0802
mov ecx, 0x47
jmp 0x5c0830
and ebx, 0xfffffffe
mov dword [esp], ebx
xor eax, eax
xor edi, edi
nop word cs:[eax + eax]
mov ebx, dword [esp + 0x24]
mov ebp, dword [ebx + edi*4]
mov edx, dword [ecx + edi*4]
mov esi, ebp
sub esi, edx
xor edx, ebp
xor esi, ebp
or esi, edx
xor esi, ebp
mov ebp, dword [ebx + edi*4 + 4]
sar esi, 0x1f
test edx, edx
mov edx, dword [ecx + edi*4 + 4]
cmove esi, eax
mov eax, ebp
sub eax, edx
xor edx, ebp
xor eax, ebp
or eax, edx
xor eax, ebp
sar eax, 0x1f
test edx, edx
cmove eax, esi
add edi, 2
cmp dword [esp], edi
jne 0x5c07c0
test byte [esp + 4], 1
je 0x5c0827
mov edx, dword [esp + 0x24]
mov edx, dword [edx + edi*4]
mov ecx, dword [ecx + edi*4]
mov esi, edx
sub esi, ecx
xor ecx, edx
xor esi, edx
or esi, ecx
xor esi, edx
sar esi, 0x1f
test ecx, ecx
cmovne eax, esi
test eax, eax
mov ecx, 0x47
js 0x5c0851
push ecx
push str.external_boringssl_src_crypto_fipsmodule_ec_scalar.c
push 0x85
push 0
push 0xf
call sym.adb.exe_ERR_put_error
add esp, 0x14
xor eax, eax
add esp, 0xc
pop esi
pop edi
pop ebx
pop ebp
ret
mov eax, 1
jmp 0x5c0849