Function at 0x5cb190
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.adb.exe_EC_GROUP_cmp
add esp, 0xc
test eax, eax
je 0x5cb1db
push 0xcc
push str.external_boringssl_src_crypto_fipsmodule_ec_oct.c
push 0x6a
push 0
push 0xf
call sym.adb.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 0x5cb319
mov ecx, dword [ebp + 0x10]
movzx eax, byte [ecx]
cmp eax, 4
jne 0x5cb32a
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.005cb000
add esp, 0x10
lea ecx, [esi + 4]
test eax, eax
je 0x5cb4c8
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 0x5cb1d1
push 0x8b
push str.external_boringssl_src_crypto_fipsmodule_ec_oct.c
push 0x64
jmp 0x5cb1c3
mov dword [esp + 4], eax
and eax, 1
mov dword [esp + 0x2c], eax
mov eax, dword [edi + 0x28]
mov ebx, eax
sar ebx, 0x1f
and ebx, eax
mov edx, eax
nop word cs:[eax + eax]
test edx, edx
jle 0x5cb362
mov ecx, dword [edi + 0x24]
mov esi, dword [ecx + edx*4 - 4]
dec edx
test esi, esi
je 0x5cb350
jmp 0x5cb379
xor edi, edi
test eax, eax
jns 0x5cb3f1
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x24]
mov esi, dword [eax + ebx*4 - 4]
dec ebx
mov edx, ebx
shl edx, 5
mov eax, esi
shr eax, 0x10
xor ebx, ebx
cmp esi, 0x10000
cmovb eax, esi
setae bl
shl ebx, 4
mov edi, eax
shr edi, 8
xor ecx, ecx
cmp eax, 0x100
cmovb edi, eax
setae cl
mov dword [esp + 8], ecx
mov eax, edi
shr eax, 4
xor ecx, ecx
cmp edi, 0x10
cmovb eax, edi
setae cl
mov dword [esp + 0x10], ecx
mov edi, eax
shr edi, 2
xor ecx, ecx
cmp eax, 4
cmovb edi, eax
setae cl
cmp esi, 1
sbb edx, 0
add edx, 8
or edx, ebx
cmp edi, 2
mov eax, dword [esp + 8]
lea eax, [edx + eax*8]
mov edx, dword [esp + 0x10]
lea eax, [eax + edx*4]
lea edi, [eax + ecx*2]
sbb edi, 0xffffffff
shr edi, 3
mov eax, dword [esp + 4]
and eax, 0xfffffffe
cmp eax, 2
jne 0x5cb4b7
lea eax, [edi + 1]
cmp eax, dword [ebp + 0x14]
jne 0x5cb4b7
mov dword [esp + 0x20], 0
mov esi, dword [ebp + 0x18]
test esi, esi
jne 0x5cb44a
push 0x18
call sym.adb.exe_OPENSSL_malloc
add esp, 4
test eax, eax
je 0x5cb5d4
mov esi, eax
pxor xmm0, xmm0
movdqu xmmword [eax], xmm0
mov dword [eax + 0x12], 0
mov dword [eax + 0xe], 0
mov dword [esp + 0x20], eax
cmp byte [esi + 0x14], 0
jne 0x5cb5ec
mov ecx, dword [esi + 8]
mov edx, dword [esi + 0x10]
cmp ecx, dword [esi + 0xc]
jne 0x5cb5c9
lea eax, [ecx + ecx*2]
shr eax, 1
test ecx, ecx
mov ebx, 0x20
cmovne ebx, eax
cmp ebx, ecx
jbe 0x5cb5e6
cmp ebx, 0x3fffffff
ja 0x5cb5e6
lea eax, [ebx*4]
push eax
push dword [esi + 4]
mov dword [esp + 0xc], edx
call sym.adb.exe_OPENSSL_realloc
mov edx, dword [esp + 0xc]
add esp, 8
test eax, eax
je 0x5cb5e6
mov dword [esi + 4], eax
mov dword [esi + 0xc], ebx
mov ecx, dword [esi + 8]
jmp 0x5cb5cc
push 0xa1
push str.external_boringssl_src_crypto_fipsmodule_ec_oct.c
push 0x6d
jmp 0x5cb1c3
mov eax, dword [edi + 4]
test eax, eax
je 0x5cb571
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 0x5cb1cf
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 0x5cb1cf
mov eax, dword [esi + 4]
mov dword [eax + ecx*4], edx
inc dword [esi + 8]
jmp 0x5cb5ec
push 0x6f
push str.external_boringssl_src_crypto_fipsmodule_bn_ctx.c
push 0x41
push 0
push 3
jmp 0x5cb1c7
mov word [esi + 0x14], 0x101
push esi
call sym.adb.exe_BN_CTX_get
add esp, 4
xor ebx, ebx
test eax, eax
mov dword [esp + 0x10], esi
je 0x5cbb3b
test edi, edi
mov dword [esp + 0x1c], eax
je 0x5cb77f
lea esi, [edi - 1]
shr esi, 2
lea ecx, [esi + 1]
mov dword [esp + 8], ecx
push ecx
push eax
call fcn.0059f5c0
add esp, 8
test eax, eax
je 0x5cbb3b
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x1c]
mov dword [ecx + 4], eax
mov dword [ecx + 0xc], 0
mov ecx, dword [ecx]
mov dword [esp + 4], ecx
mov ecx, edi
shr ecx, 2
cmp ecx, esi
mov ebx, esi
cmovb ebx, ecx
xor edx, edx
cmp ebx, 0x10
mov dword [esp + 0x18], esi
jb 0x5cb751
mov dword [esp + 0xc], ebx
cmp ecx, esi
mov eax, esi
cmovb eax, ecx
mov ebx, dword [ebp + 0x10]
lea esi, [edi + ebx]
inc esi
cmp dword [esp + 4], esi
jae 0x5cb69d
mov esi, dword [esp + 4]
lea esi, [esi + eax*4]
add esi, 4
shl eax, 2
mov ebx, edi
sub ebx, eax
mov eax, dword [ebp + 0x10]
add eax, ebx
add eax, 0xfffffffd
mov ebx, dword [ebp + 0x10]
cmp eax, esi
jb 0x5cb754
mov ebx, dword [esp + 0xc]
lea edx, [ebx + 1]
mov esi, edx
and esi, 7
mov eax, 8
cmovne eax, esi
mov dword [esp + 0x14], eax
sub edx, eax
lea eax, [edx*4]
mov esi, dword [ebp + 0x10]
add esi, edi
add esi, 0xfffffff1
sub edi, eax
mov eax, dword [esp + 4]
add eax, 0x10
not ebx
add ebx, dword [esp + 0x14]
mov dword [esp + 0xc], ebx
xor ebx, ebx
pxor xmm0, xmm0
movdqu xmm1, xmmword [esi + ebx*4 - 0x10]
movdqu xmm2, xmmword [esi + 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 [eax - 0x10], xmm2
movdqu xmmword [eax], xmm1
add eax, 0x20
add ebx, 0xfffffff8
cmp dword [esp + 0xc], ebx
jne 0x5cb6df
mov ebx, dword [ebp + 0x10]
cmp ecx, edx
je 0x5cb788
mov eax, dword [ebx + edi - 3]
bswap eax
mov esi, edi
mov edi, ebx
mov ebx, ecx
mov ecx, dword [esp + 4]
mov dword [ecx + edx*4], eax
mov eax, dword [esp + 8]
mov ecx, ebx
mov ebx, edi
mov edi, esi
add edi, 0xfffffffc
inc edx
cmp eax, edx
jne 0x5cb754
jmp 0x5cb7d1
mov dword [eax + 4], 0
jmp 0x5cb7d1
test edi, edi
je 0x5cb7a3
xor eax, eax
xor esi, esi
shl esi, 8
movzx edx, byte [ebx + eax + 1]
or edx, esi
inc eax
mov esi, edx
cmp eax, edi
jb 0x5cb790
jmp 0x5cb7a5
xor edx, edx
mov eax, dword [esp + 4]
mov dword [eax + ecx*4], edx
mov eax, dword [esp + 0x18]
sub eax, ecx
shl eax, 2
test eax, eax
je 0x5cb7d1
mov edx, eax
mov eax, dword [esp + 4]
lea eax, [eax + ecx*4]
add eax, 4
push edx
push 0
push eax
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
add esp, 0xc
mov eax, dword [esp + 0x1c]
mov ebx, dword [eax]
mov ecx, dword [eax + 4]
mov eax, dword [ebp + 8]
mov edx, dword [eax + 0x24]
mov eax, dword [eax + 0x28]
cmp ecx, eax
mov esi, eax
cmovb esi, ecx
test esi, esi
mov dword [esp + 0x18], ecx
mov dword [esp + 0xc], eax
mov dword [esp + 4], edx
je 0x5cb844
mov dword [esp + 8], esi
xor esi, esi
xor edi, edi
nop word cs:[eax + eax]
mov ecx, dword [ebx + edi*4]
mov eax, dword [esp + 4]
mov edx, dword [eax + edi*4]
mov eax, ebx
mov ebx, ecx
sub ebx, edx
xor edx, ecx
xor ebx, ecx
or ebx, edx
xor ebx, ecx
mov ecx, ebx
sar ecx, 0x1f
not ebx
shr ebx, 0x1f
or ebx, ecx
test edx, edx
cmovne esi, ebx
mov ebx, eax
inc edi
cmp dword [esp + 8], edi
jne 0x5cb810
jmp 0x5cb846
xor esi, esi
mov dword [esp + 8], esi
mov ecx, dword [esp + 0x18]
mov eax, ecx
mov edx, dword [esp + 0xc]
sub eax, edx
jae 0x5cb870
mov eax, edx
sub eax, ecx
xor edi, edi
cmp eax, 8
jae 0x5cb885
mov esi, dword [esp + 0x10]
mov eax, dword [esp + 8]
jmp 0x5cb9d4
jbe 0x5cb8b7
xor edi, edi
cmp eax, 8
mov dword [esp + 0x14], ebx
jae 0x5cb8ca
mov ebx, dword [ebp + 0xc]
jmp 0x5cbadc
lea edx, [eax - 8]
mov esi, edx
shr esi, 3
inc esi
mov edi, esi
and edi, 3
cmp edx, 0x18
mov dword [esp + 0x14], eax
mov dword [esp + 0x28], edi
jae 0x5cb8f0
pxor xmm0, xmm0
xor edi, edi
pxor xmm1, xmm1
mov edx, dword [esp + 0xc]
mov eax, dword [esp + 8]
jmp 0x5cb966
mov ebx, dword [ebp + 0xc]
mov ecx, dword [ebp + 8]
mov esi, dword [esp + 0x10]
mov eax, dword [esp + 8]
jmp 0x5cbb01
lea ecx, [eax - 8]
mov esi, ecx
shr esi, 3
inc esi
mov edx, esi
and edx, 3
cmp ecx, 0x18
jae 0x5cba01
pxor xmm0, xmm0
xor ebx, ebx
pxor xmm1, xmm1
jmp 0x5cba6f
and esi, 0xfffffffc
mov eax, dword [esp + 4]
lea ebx, [eax + ecx*4]
add ebx, 0x70
pxor xmm0, xmm0
xor edi, edi
pxor xmm1, xmm1
mov edx, dword [esp + 0xc]
mov eax, dword [esp + 8]
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 0x5cb90f
mov esi, dword [esp + 0x14]
and esi, 0xfffffff8
mov dword [esp + 0x24], esi
mov esi, dword [esp + 0x28]
test esi, esi
je 0x5cb9a4
add edi, ecx
mov ebx, dword [esp + 4]
lea edi, [ebx + edi*4]
add edi, 0x10
shl esi, 5
xor ebx, ebx
movdqu xmm2, xmmword [edi + ebx - 0x10]
por xmm0, xmm2
movdqu xmm2, xmmword [edi + ebx]
por xmm1, xmm2
add ebx, 0x20
cmp esi, ebx
jne 0x5cb98a
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd edi, xmm0
mov esi, dword [esp + 0x24]
cmp dword [esp + 0x14], esi
jne 0x5cb9ce
mov esi, dword [esp + 0x10]
jmp 0x5cb9e8
add ecx, esi
mov esi, dword [esp + 0x10]
mov ebx, dword [esp + 4]
nop dword [eax + eax]
or edi, dword [ebx + ecx*4]
inc ecx
cmp edx, ecx
jne 0x5cb9e0
mov ecx, edi
not ecx
dec edi
and edi, ecx
sar edi, 0x1f
not edi
or eax, edi
mov ecx, dword [ebp + 8]
mov ebx, dword [ebp + 0xc]
jmp 0x5cbb01
and esi, 0xfffffffc
mov ecx, dword [esp + 0xc]
lea edi, [ebx + ecx*4]
add edi, 0x70
pxor xmm0, xmm0
xor ebx, ebx
pxor xmm1, xmm1
movdqu xmm2, xmmword [edi + ebx*4 - 0x70]
por xmm2, xmm0
movdqu xmm0, xmmword [edi + ebx*4 - 0x60]
por xmm0, xmm1
movdqu xmm1, xmmword [edi + ebx*4 - 0x50]
movdqu xmm3, xmmword [edi + ebx*4 - 0x40]
movdqu xmm4, xmmword [edi + ebx*4 - 0x30]
por xmm4, xmm1
por xmm4, xmm2
movdqu xmm2, xmmword [edi + ebx*4 - 0x20]
por xmm2, xmm3
por xmm2, xmm0
movdqu xmm0, xmmword [edi + ebx*4 - 0x10]
por xmm0, xmm4
movdqu xmm1, xmmword [edi + ebx*4]
por xmm1, xmm2
add ebx, 0x20
add esi, 0xfffffffc
jne 0x5cba18
mov esi, eax
and esi, 0xfffffff8
mov ecx, edx
test edx, edx
je 0x5cbaab
add ebx, dword [esp + 0xc]
mov ecx, eax
mov eax, dword [esp + 0x14]
lea edi, [eax + ebx*4]
add edi, 0x10
mov eax, ecx
shl edx, 5
xor ebx, ebx
movdqu xmm2, xmmword [edi + ebx - 0x10]
por xmm0, xmm2
movdqu xmm2, xmmword [edi + ebx]
por xmm1, xmm2
add ebx, 0x20
cmp edx, ebx
jne 0x5cba91
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd edi, xmm0
cmp eax, esi
mov ebx, dword [ebp + 0xc]
mov ecx, dword [esp + 0x18]
jne 0x5cbad6
mov esi, dword [esp + 0x10]
jmp 0x5cbaec
mov edx, dword [esp + 0xc]
add edx, esi
mov esi, dword [esp + 0x10]
mov eax, dword [esp + 0x14]
or edi, dword [eax + edx*4]
inc edx
cmp ecx, edx
jne 0x5cbae4
xor edx, edx
xor ecx, ecx
test edi, edi
cmove edx, dword [esp + 8]
setne cl
or ecx, edx
mov eax, ecx
mov ecx, dword [ebp + 8]
test eax, eax
js 0x5cbb21
push 0xb9
push str.external_boringssl_src_crypto_fipsmodule_ec_oct.c
push 0x6d
push 0
push 0xf
call sym.adb.exe_ERR_put_error
add esp, 0x14
xor ebx, ebx
jmp 0x5cbb3b
push esi
push dword [esp + 0x30]
push dword [esp + 0x24]
push ebx
push ecx
call sym.adb.exe_EC_POINT_set_compressed_coordinates_GFp
add esp, 0x14
xor ebx, ebx
test eax, eax
setne bl
mov esi, dword [esp + 0x10]
cmp byte [esi + 0x14], 0
jne 0x5cbb58
mov eax, dword [esi + 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 + 0x20]
test esi, esi
je 0x5cb1d1
push sym.adb.exe_BN_free
push 0x5e5450
push dword [esi]
call sym.adb.exe_sk_pop_free_ex
add esp, 0xc
push dword [esi + 4]
call sym.adb.exe_OPENSSL_free
add esp, 4
push esi
call sym.adb.exe_OPENSSL_free
add esp, 4
jmp 0x5cb1d1