Function at 0x5d7d50
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x40
mov edi, dword [ebp + 0x14]
mov eax, dword [ebp + 0x18]
test eax, eax
cmove eax, edi
mov dword [esp + 0x1c], eax
mov eax, dword [ebp + 8]
mov ecx, dword [eax + 4]
mov eax, dword [ecx + 4]
test eax, eax
je 0x5d7eaf
mov ecx, dword [ecx]
xor ebx, ebx
mov edx, 0
cmp eax, 8
jb 0x5d7e70
lea edx, [eax - 8]
mov ebx, edx
shr ebx, 3
inc ebx
mov edi, ebx
and edi, 3
cmp edx, 0x18
jae 0x5d7dad
pxor xmm0, xmm0
xor edx, edx
pxor xmm1, xmm1
jmp 0x5d7e17
and ebx, 0xfffffffc
pxor xmm0, xmm0
xor edx, edx
pxor xmm1, xmm1
nop word [eax + eax]
movdqu xmm2, xmmword [ecx + edx*4]
por xmm2, xmm0
movdqu xmm0, xmmword [ecx + edx*4 + 0x10]
por xmm0, xmm1
movdqu xmm1, xmmword [ecx + edx*4 + 0x20]
movdqu xmm3, xmmword [ecx + edx*4 + 0x30]
movdqu xmm4, xmmword [ecx + edx*4 + 0x40]
por xmm4, xmm1
por xmm4, xmm2
movdqu xmm2, xmmword [ecx + edx*4 + 0x50]
por xmm2, xmm3
por xmm2, xmm0
movdqu xmm0, xmmword [ecx + edx*4 + 0x60]
por xmm0, xmm4
movdqu xmm1, xmmword [ecx + edx*4 + 0x70]
por xmm1, xmm2
add edx, 0x20
add ebx, 0xfffffffc
jne 0x5d7dc0
mov ebx, eax
and ebx, 0xfffffff8
test edi, edi
je 0x5d7e4a
lea edx, [ecx + edx*4]
add edx, 0x10
shl edi, 5
xor esi, esi
nop dword [eax + eax]
movdqu xmm2, xmmword [edx + esi - 0x10]
por xmm0, xmm2
movdqu xmm2, xmmword [edx + esi]
por xmm1, xmm2
add esi, 0x20
cmp edi, esi
jne 0x5d7e30
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd edx, xmm0
cmp eax, ebx
mov edi, dword [ebp + 0x14]
je 0x5d7e78
nop dword [eax + eax]
or edx, dword [ecx + ebx*4]
inc ebx
cmp eax, ebx
jne 0x5d7e70
test edx, edx
je 0x5d7eaf
mov esi, dword [ebp + 0xc]
mov edx, eax
mov eax, dword [edi + 4]
mov dword [esp + 0x18], eax
mov eax, edx
sar edx, 0x1f
and edx, eax
mov dword [esp + 0xc], edx
mov dword [esp + 4], eax
mov edx, eax
nop dword [eax]
test edx, edx
jle 0x5d7ec0
mov edi, dword [ecx + edx*4 - 4]
dec edx
test edi, edi
je 0x5d7ea0
jmp 0x5d7ed8
push 0x25f
push str.external_boringssl_src_crypto_fipsmodule_rsa_padding.c
push pe_nt_image_headers32
jmp 0x5d808c
xor ebx, ebx
cmp dword [esp + 4], 0
jns 0x5d7f57
mov esi, dword [esp + 0xc]
lea edx, [esi - 1]
mov edi, dword [ecx + esi*4 - 4]
shl edx, 5
xor ebx, ebx
test edi, edi
setne bl
mov esi, edi
shr esi, 0x10
xor eax, eax
cmp edi, 0x10000
cmovb esi, edi
setae al
shl eax, 4
mov dword [esp + 0x14], eax
mov edi, esi
shr edi, 8
xor eax, eax
cmp esi, 0x100
cmovb edi, esi
setae al
mov dword [esp + 8], eax
mov esi, edi
shr esi, 4
xor eax, eax
cmp edi, 0x10
cmovb esi, edi
setae al
mov dword [esp + 0x10], eax
mov edi, esi
shr edi, 2
xor eax, eax
cmp esi, 4
cmovb edi, esi
mov esi, dword [ebp + 0xc]
setae al
or ebx, edx
add ebx, dword [esp + 0x14]
mov edx, dword [esp + 8]
lea edx, [ebx + edx*8]
mov ebx, dword [esp + 0x10]
lea edx, [edx + ebx*4]
cmp edi, 2
lea ebx, [edx + eax*2]
sbb ebx, 0xffffffff
dec ebx
and ebx, 7
mov edi, dword [ebp + 8]
mov edx, dword [edi]
mov edx, dword [edx + 0x14]
test edx, edx
je 0x5d7f72
push edi
call edx
add esp, 4
jmp 0x5d802a
mov edx, dword [esp + 4]
nop word cs:[eax + eax]
test edx, edx
jle 0x5d7f8f
mov edi, dword [ecx + edx*4 - 4]
dec edx
test edi, edi
je 0x5d7f80
jmp 0x5d7fa8
xor eax, eax
cmp dword [esp + 4], 0
mov esi, dword [ebp + 0xc]
jns 0x5d802a
mov edx, dword [esp + 0xc]
mov edi, dword [ecx + edx*4 - 4]
dec edx
shl edx, 5
mov dword [esp + 0x14], ebx
mov ebx, edi
shr ebx, 0x10
xor eax, eax
cmp edi, 0x10000
cmovb ebx, edi
setae al
shl eax, 4
mov dword [esp + 4], eax
mov esi, ebx
shr esi, 8
xor eax, eax
cmp ebx, 0x100
cmovb esi, ebx
setae al
mov dword [esp + 8], eax
mov eax, esi
shr eax, 4
xor ebx, ebx
cmp esi, 0x10
cmovb eax, esi
setae bl
mov esi, eax
shr esi, 2
xor ecx, ecx
cmp eax, 4
cmovb esi, eax
setae cl
cmp edi, 1
sbb edx, 0
add edx, 8
or edx, dword [esp + 4]
cmp esi, 2
mov eax, dword [esp + 8]
lea eax, [edx + eax*8]
lea eax, [eax + ebx*4]
mov ebx, dword [esp + 0x14]
lea eax, [eax + ecx*2]
sbb eax, 0xffffffff
shr eax, 3
mov esi, dword [ebp + 0xc]
test ebx, ebx
jne 0x5d8033
mov byte [esi], 0
inc esi
dec eax
mov edx, dword [esp + 0x18]
mov edi, dword [ebp + 0x1c]
lea ecx, [edx + 2]
cmp eax, ecx
jae 0x5d8048
push 0x26c
jmp 0x5d8085
mov ecx, edx
cmp edi, 0xffffffff
je 0x5d8067
cmp edi, 0xfffffffe
jne 0x5d805d
mov ecx, eax
sub ecx, edx
add ecx, 0xfffffffe
jmp 0x5d8067
mov ecx, edi
test edi, edi
js 0x5d820f
mov dword [esp + 4], ecx
mov dword [esp + 0x14], ebx
mov ebx, eax
sub ebx, edx
lea ecx, [ebx - 2]
cmp ecx, dword [esp + 4]
mov ecx, dword [esp + 4]
jae 0x5d80af
push 0x281
push str.external_boringssl_src_crypto_fipsmodule_rsa_padding.c
push 0x72
push 0
push 4
call sym.adb.exe_ERR_put_error
add esp, 0x14
xor esi, esi
xor edi, edi
push edi
call sym.adb.exe_OPENSSL_free
add esp, 4
mov eax, esi
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov dword [esp + 0x10], eax
test ecx, ecx
je 0x5d80de
push ecx
call sym.adb.exe_OPENSSL_malloc
add esp, 4
test eax, eax
je 0x5d8223
mov edi, eax
push 0x8bf7c3
push dword [esp + 8]
push eax
call fcn.005b67d0
add esp, 0xc
jmp 0x5d80e0
xor edi, edi
pxor xmm0, xmm0
movdqa xmmword [esp + 0x20], xmm0
mov ecx, dword [ebp + 0x14]
test ecx, ecx
je 0x5d8121
push dword [ecx + 0x1c]
call sym.adb.exe_OPENSSL_malloc
add esp, 4
test eax, eax
je 0x5d8234
push 0
mov dword [esp + 0xc], eax
call sym.adb.exe_OPENSSL_free
add esp, 4
mov eax, dword [esp + 8]
mov dword [esp + 0x24], eax
mov ecx, dword [ebp + 0x14]
mov dword [esp + 0x20], ecx
mov dword [esp + 8], esi
lea eax, [esi + ebx]
dec eax
mov dword [esp + 0xc], eax
dec ebx
lea esi, [esp + 0x20]
push esi
call dword [ecx + 0xc]
add esp, 4
mov eax, dword [esp + 0x20]
push 8
push 0x8bf852
push esi
call dword [eax + 0x10]
add esp, 0xc
mov eax, dword [esp + 0x20]
push dword [esp + 0x18]
push dword [ebp + 0x10]
push esi
call dword [eax + 0x10]
add esp, 0xc
mov eax, dword [esp + 0x20]
push dword [esp + 4]
push edi
push esi
call dword [eax + 0x10]
add esp, 0xc
mov eax, dword [esp + 0x20]
push dword [esp + 0xc]
push esi
call dword [eax + 0x14]
add esp, 8
mov eax, dword [esp + 0x20]
push dword [eax + 0x1c]
push dword [esp + 0x28]
call sym.adb.exe_OPENSSL_cleanse
add esp, 8
push dword [esp + 0x24]
call sym.adb.exe_OPENSSL_free
add esp, 4
mov eax, dword [esp + 0x2c]
test eax, eax
je 0x5d81ac
push dword [esp + 0x28]
call dword [eax]
add esp, 4
pxor xmm0, xmm0
movdqa xmmword [esp + 0x20], xmm0
mov esi, dword [esp + 8]
mov ecx, esi
mov edx, ebx
push dword [esp + 0x1c]
mov ebx, dword [esp + 0x1c]
push ebx
push dword [esp + 0x14]
call fcn.005d6fc0
add esp, 0xc
test eax, eax
je 0x5d8260
mov ecx, dword [esp + 4]
lea edx, [ebx + ecx]
mov eax, esi
mov esi, dword [esp + 0x10]
sub esi, edx
xor byte [esi + eax - 2], 1
test ecx, ecx
je 0x5d840a
mov eax, dword [esp + 8]
lea ebx, [esi + eax]
add ebx, 0xfffffffe
xor eax, eax
cmp ecx, 8
jae 0x5d8267
mov edx, ebx
jmp 0x5d83a4
push 0x27a
push str.external_boringssl_src_crypto_fipsmodule_rsa_padding.c
push 0x8a
jmp 0x5d808c
push 0x288
push str.external_boringssl_src_crypto_fipsmodule_rsa_padding.c
push 0x41
jmp 0x5d808c
push 0xd2
push str.external_boringssl_src_crypto_fipsmodule_digest_digest.c
push 0x41
push 0
push 0x1d
call sym.adb.exe_ERR_put_error
add esp, 0x14
push 0
call sym.adb.exe_OPENSSL_free
add esp, 4
pxor xmm0, xmm0
movdqa xmmword [esp + 0x20], xmm0
xor esi, esi
jmp 0x5d809c
mov dword [esp + 0x1c], ebx
mov ebx, dword [esp + 0x10]
dec ebx
mov dword [esp + 0xc], ebx
sub ebx, edx
add ebx, dword [esp + 8]
lea edx, [edi + ecx]
cmp ebx, edx
jae 0x5d829e
mov ecx, dword [esp + 0xc]
sub ecx, dword [esp + 0x18]
add ecx, dword [esp + 8]
cmp edi, ecx
jae 0x5d829e
mov edx, dword [esp + 0x1c]
mov ecx, dword [esp + 4]
jmp 0x5d83a4
xor eax, eax
mov ecx, dword [esp + 4]
cmp ecx, 0x20
mov ebx, dword [esp + 0x1c]
jb 0x5d8376
lea eax, [ecx - 0x20]
mov ecx, eax
shr ecx, 5
inc ecx
xor edx, edx
cmp eax, 0x20
jb 0x5d8326
mov eax, ecx
and eax, 0xfffffffe
mov edx, dword [esp + 8]
add esi, edx
add esi, 0x2f
xor edx, edx
movups xmm0, xmmword [edi + edx]
movups xmm1, xmmword [edi + edx + 0x10]
movups xmm2, xmmword [esi + edx - 0x30]
xorps xmm2, xmm0
movups xmm0, xmmword [esi + edx - 0x20]
xorps xmm0, xmm1
movups xmmword [esi + edx - 0x30], xmm2
movups xmmword [esi + edx - 0x20], xmm0
movdqu xmm0, xmmword [edi + edx + 0x20]
movdqu xmm1, xmmword [edi + edx + 0x30]
movdqu xmm2, xmmword [esi + edx - 0x10]
pxor xmm2, xmm0
movdqu xmm0, xmmword [esi + edx]
pxor xmm0, xmm1
movdqu xmmword [esi + edx - 0x10], xmm2
movdqu xmmword [esi + edx], xmm0
add edx, 0x40
add eax, 0xfffffffe
jne 0x5d82d1
mov eax, dword [esp + 4]
and eax, 0xffffffe0
test cl, 1
je 0x5d835d
movdqu xmm0, xmmword [edi + edx]
movdqu xmm1, xmmword [edi + edx + 0x10]
movdqu xmm2, xmmword [ebx + edx + 1]
pxor xmm2, xmm0
movdqu xmm0, xmmword [ebx + edx + 0x11]
pxor xmm0, xmm1
movdqu xmmword [ebx + edx + 1], xmm2
movdqu xmmword [ebx + edx + 0x11], xmm0
mov ecx, dword [esp + 4]
cmp ecx, eax
je 0x5d840a
test cl, 0x18
je 0x5d8436
mov ecx, dword [esp + 4]
mov esi, eax
mov eax, ecx
and eax, 0xfffffff8
lea edx, [ebx + eax]
movq xmm0, qword [edi + esi]
movq xmm1, qword [ebx + esi + 1]
pxor xmm1, xmm0
movq qword [ebx + esi + 1], xmm1
add esi, 8
cmp eax, esi
jne 0x5d8380
mov ecx, dword [esp + 4]
cmp ecx, eax
je 0x5d840a
mov ebx, eax
not ebx
add ebx, ecx
mov esi, ecx
and esi, 3
je 0x5d83cc
nop word cs:[eax + eax]
movzx ecx, byte [edi + eax]
xor byte [edx + 1], cl
inc edx
inc eax
dec esi
jne 0x5d83c0
cmp ebx, 3
mov esi, dword [esp + 4]
jb 0x5d840a
sub esi, eax
add eax, edi
add eax, 3
xor ecx, ecx
nop
movzx ebx, byte [eax + ecx - 3]
xor byte [edx + ecx + 1], bl
movzx ebx, byte [eax + ecx - 2]
xor byte [edx + ecx + 2], bl
movzx ebx, byte [eax + ecx - 1]
xor byte [edx + ecx + 3], bl
movzx ebx, byte [eax + ecx]
xor byte [edx + ecx + 4], bl
add ecx, 4
cmp esi, ecx
jne 0x5d83e0
mov eax, dword [esp + 0x14]
test eax, eax
mov edx, dword [esp + 8]
je 0x5d8423
mov cl, 8
sub cl, al
mov eax, 0xff
shr eax, cl
and byte [edx], al
mov eax, dword [esp + 0x10]
mov byte [eax + edx - 1], 0xbc
mov esi, 1
jmp 0x5d809c
add ebx, eax
mov edx, ebx
jmp 0x5d8295