Function at 0x5dc120
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x20
mov edi, dword [esp + 0x34]
cmp dword [edi + 4], 0
je 0x5dc191
cmp dword [edi + 0xc], 0
je 0x5dc191
mov dword [esp + 0x1c], 0
push 0x18
call sym.adb.exe_OPENSSL_malloc
add esp, 4
test eax, eax
je 0x5dc1b8
mov esi, eax
pxor xmm0, xmm0
movdqu xmmword [eax], xmm0
mov dword [eax + 0x12], 0
mov dword [eax + 0xe], 0
push 0x80
push 0
call sym.adb.exe_OPENSSL_realloc
add esp, 8
test eax, eax
je 0x5dc1c7
mov dword [esi + 4], eax
mov dword [esi + 0xc], 0x20
mov ecx, dword [esi + 8]
mov dword [eax + ecx*4], 0
inc dword [esi + 8]
jmp 0x5dc1cd
push 0x2c2
push str.external_boringssl_src_crypto_fipsmodule_rsa_rsa_impl.c
push 0x90
push 0
push 4
call sym.adb.exe_ERR_put_error
add esp, 0x14
xor ebp, ebp
mov eax, ebp
add esp, 0x20
pop esi
pop edi
pop ebx
pop ebp
ret
push 0x6f
push str.external_boringssl_src_crypto_fipsmodule_bn_ctx.c
push 0x41
push 0
push 3
jmp 0x5dc1a4
mov word [esi + 0x14], 0x101
push esi
call sym.adb.exe_BN_CTX_get
add esp, 4
mov ebp, eax
push esi
call sym.adb.exe_BN_CTX_get
add esp, 4
test ebp, ebp
je 0x5dc2b2
mov ebx, eax
test eax, eax
je 0x5dc2b2
push ebp
push dword [esp + 0x44]
push dword [esp + 0x44]
call sym.adb.exe_BN_bin2bn
add esp, 0xc
test eax, eax
je 0x5dc58e
mov dword [esp + 0x14], ebx
mov dword [esp + 0x18], esi
mov eax, dword [edi + 4]
mov ebx, dword [ebp]
mov dword [esp + 8], ebp
mov ecx, dword [ebp + 4]
mov edx, dword [eax]
mov dword [esp + 0x10], edx
mov esi, dword [eax + 4]
cmp ecx, esi
mov dword [esp], esi
mov dword [esp + 0xc], ecx
cmovb esi, ecx
xor eax, eax
test esi, esi
je 0x5dc270
xor edi, edi
nop
mov edx, dword [ebx + edi*4]
mov ecx, dword [esp + 0x10]
mov ebp, dword [ecx + edi*4]
mov ecx, ebx
mov ebx, edx
sub ebx, ebp
xor ebp, edx
xor ebx, edx
or ebx, ebp
xor ebx, edx
mov edx, ebx
sar edx, 0x1f
not ebx
shr ebx, 0x1f
or ebx, edx
test ebp, ebp
cmovne eax, ebx
mov ebx, ecx
inc edi
cmp esi, edi
jne 0x5dc240
mov dword [esp + 4], eax
mov ecx, dword [esp + 0xc]
mov eax, ecx
mov edx, dword [esp]
sub eax, edx
jae 0x5dc2c3
mov eax, edx
sub eax, ecx
xor esi, esi
cmp eax, 8
jb 0x5dc3f8
lea esi, [eax - 8]
mov ebx, esi
shr ebx, 3
inc ebx
mov ebp, ebx
and ebp, 3
cmp esi, 0x18
jae 0x5dc30e
pxor xmm0, xmm0
xor esi, esi
pxor xmm1, xmm1
jmp 0x5dc387
push 0x2d5
push str.external_boringssl_src_crypto_fipsmodule_rsa_rsa_impl.c
push 0x41
jmp 0x5dc582
jbe 0x5dc2fd
xor esi, esi
cmp eax, 8
jb 0x5dc4ff
lea edx, [eax - 8]
mov edi, edx
shr edi, 3
inc edi
mov esi, edi
and esi, 3
mov dword [esp + 0x10], esi
cmp edx, 0x18
jae 0x5dc42b
pxor xmm0, xmm0
xor esi, esi
pxor xmm1, xmm1
mov edx, dword [esp]
jmp 0x5dc499
mov edi, dword [esp + 0x34]
mov ebp, dword [esp + 8]
mov ebx, dword [esp + 4]
jmp 0x5dc52a
and ebx, 0xfffffffc
mov esi, eax
mov eax, dword [esp + 0x10]
lea edi, [eax + ecx*4]
add edi, 0x70
mov eax, esi
pxor xmm0, xmm0
xor esi, esi
pxor xmm1, xmm1
nop dword [eax]
movdqu xmm2, xmmword [edi + esi*4 - 0x70]
por xmm2, xmm0
movdqu xmm0, xmmword [edi + esi*4 - 0x60]
por xmm0, xmm1
movdqu xmm1, xmmword [edi + esi*4 - 0x50]
movdqu xmm3, xmmword [edi + esi*4 - 0x40]
movdqu xmm4, xmmword [edi + esi*4 - 0x30]
por xmm4, xmm1
por xmm4, xmm2
movdqu xmm2, xmmword [edi + esi*4 - 0x20]
por xmm2, xmm3
por xmm2, xmm0
movdqu xmm0, xmmword [edi + esi*4 - 0x10]
por xmm0, xmm4
movdqu xmm1, xmmword [edi + esi*4]
por xmm1, xmm2
add esi, 0x20
add ebx, 0xfffffffc
jne 0x5dc330
mov ebx, eax
and ebx, 0xfffffff8
test ebp, ebp
je 0x5dc3ca
add esi, ecx
mov edi, eax
mov eax, dword [esp + 0x10]
lea esi, [eax + esi*4]
add esi, 0x10
mov eax, edi
shl ebp, 5
xor edi, edi
nop word cs:[eax + eax]
movdqu xmm2, xmmword [esi + edi - 0x10]
por xmm0, xmm2
movdqu xmm2, xmmword [esi + edi]
por xmm1, xmm2
add edi, 0x20
cmp ebp, edi
jne 0x5dc3b0
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd esi, xmm0
cmp eax, ebx
jne 0x5dc3f6
mov edi, dword [esp + 0x34]
mov ebx, dword [esp + 4]
mov ebp, dword [esp + 8]
jmp 0x5dc418
add ecx, ebx
mov edi, dword [esp + 0x34]
mov ebp, dword [esp + 8]
mov eax, dword [esp + 0x10]
mov ebx, dword [esp + 4]
nop dword [eax + eax]
or esi, dword [eax + ecx*4]
inc ecx
cmp edx, ecx
jne 0x5dc410
mov ecx, esi
not ecx
dec esi
and esi, ecx
sar esi, 0x1f
not esi
or ebx, esi
jmp 0x5dc52a
and edi, 0xfffffffc
mov edx, dword [esp]
lea ebp, [ebx + edx*4]
add ebp, 0x70
pxor xmm0, xmm0
xor esi, esi
pxor xmm1, xmm1
movdqu xmm2, xmmword [ebp + esi*4 - 0x70]
por xmm2, xmm0
movdqu xmm0, xmmword [ebp + esi*4 - 0x60]
por xmm0, xmm1
movdqu xmm1, xmmword [ebp + esi*4 - 0x50]
movdqu xmm3, xmmword [ebp + esi*4 - 0x40]
movdqu xmm4, xmmword [ebp + esi*4 - 0x30]
por xmm4, xmm1
por xmm4, xmm2
movdqu xmm2, xmmword [ebp + esi*4 - 0x20]
por xmm2, xmm3
por xmm2, xmm0
movdqu xmm0, xmmword [ebp + esi*4 - 0x10]
por xmm0, xmm4
movdqu xmm1, xmmword [ebp + esi*4]
por xmm1, xmm2
add esi, 0x20
add edi, 0xfffffffc
jne 0x5dc441
mov edi, eax
and edi, 0xfffffff8
mov dword [esp], edi
mov edi, dword [esp + 0x10]
test edi, edi
je 0x5dc4d0
add esi, edx
lea esi, [ebx + esi*4]
add esi, 0x10
shl edi, 5
xor ebp, ebp
movdqu xmm2, xmmword [esi + ebp - 0x10]
por xmm0, xmm2
movdqu xmm2, xmmword [esi + ebp]
por xmm1, xmm2
add ebp, 0x20
cmp edi, ebp
jne 0x5dc4b6
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd esi, xmm0
mov edi, dword [esp]
cmp eax, edi
jne 0x5dc4fb
mov edi, dword [esp + 0x34]
mov ebp, dword [esp + 8]
jmp 0x5dc518
mov eax, edi
add edx, edi
mov edi, dword [esp + 0x34]
mov ebp, dword [esp + 8]
nop word [eax + eax]
or esi, dword [ebx + edx*4]
inc edx
cmp ecx, edx
jne 0x5dc510
xor edx, edx
xor ecx, ecx
test esi, esi
cmove edx, dword [esp + 4]
setne cl
or ecx, edx
mov ebx, ecx
test ebx, ebx
mov esi, dword [esp + 0x18]
js 0x5dc540
push 0x2df
push str.external_boringssl_src_crypto_fipsmodule_rsa_rsa_impl.c
push 0x73
jmp 0x5dc582
mov ecx, edi
mov edx, esi
call fcn.005dcc60
test eax, eax
je 0x5dc576
mov ecx, dword [edi + 0x2c]
cmp dword [edi + 8], 0
jne 0x5dc612
mov eax, ecx
and eax, 8
jne 0x5dc612
push 0x2ef
push str.external_boringssl_src_crypto_fipsmodule_rsa_rsa_impl.c
push 0x82
jmp 0x5dc582
push 0x2e4
push str.external_boringssl_src_crypto_fipsmodule_rsa_rsa_impl.c
push 0x44
push 0
push 4
call sym.adb.exe_ERR_put_error
add esp, 0x14
xor ebp, ebp
xor ebx, ebx
cmp byte [esi + 0x14], 0
jne 0x5dc5ab
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
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
test ebx, ebx
je 0x5dc1ae
mov esi, dword [esp + 0x1c]
cmp esi, 0x400
jne 0x5dc5ef
push ebx
call fcn.005d6520
jmp 0x5dc60a
mov ebx, edi
add edi, 0x30
push edi
call sym.adb.exe_CRYPTO_MUTEX_lock_write
add esp, 4
mov eax, dword [ebx + 0x58]
mov byte [eax + esi], 0
push edi
call sym.adb.exe_CRYPTO_MUTEX_unlock_write
add esp, 4
jmp 0x5dc1ae
xor ebx, ebx
mov dword [esp + 0x10], ecx
test cl, 8
jne 0x5dc64b
lea edx, [esp + 0x1c]
mov ecx, edi
call fcn.005dcea0
test eax, eax
je 0x5dc6df
mov ebx, eax
push esi
push dword [edi + 0x34]
push dword [edi + 8]
push eax
push ebp
call fcn.005d65b0
add esp, 0x14
test eax, eax
je 0x5dc89e
mov eax, dword [edi + 0x10]
test eax, eax
je 0x5dc7d8
mov esi, dword [edi + 0x14]
test esi, esi
je 0x5dc7d8
cmp dword [edi + 8], 0
je 0x5dc7d8
cmp dword [edi + 0x18], 0
je 0x5dc7d8
cmp dword [edi + 0x1c], 0
je 0x5dc7d8
cmp dword [edi + 0x20], 0
je 0x5dc7d8
cmp dword [esi + 0xc], 0
jne 0x5dc7d8
mov ecx, dword [edi + 0x38]
mov ecx, dword [ecx + 0x18]
mov edx, dword [esi + 4]
mov dword [esp], edx
sub edx, ecx
jbe 0x5dc7ce
mov esi, dword [esi]
mov dword [esp + 4], esi
xor esi, esi
mov dword [esp + 0xc], edx
cmp edx, 8
jb 0x5dc7b3
mov edx, dword [esp + 0xc]
lea esi, [edx - 8]
mov edi, esi
shr edi, 3
inc edi
mov edx, edi
and edx, 3
cmp esi, 0x18
jae 0x5dc6e9
pxor xmm0, xmm0
xor esi, esi
pxor xmm1, xmm1
jmp 0x5dc758
push 0x2f6
jmp 0x5dc57b
and edi, 0xfffffffc
mov esi, dword [esp + 4]
lea ebp, [esi + ecx*4]
add ebp, 0x70
pxor xmm0, xmm0
xor esi, esi
pxor xmm1, xmm1
movdqu xmm2, xmmword [ebp + esi*4 - 0x70]
por xmm2, xmm0
movdqu xmm0, xmmword [ebp + esi*4 - 0x60]
por xmm0, xmm1
movdqu xmm1, xmmword [ebp + esi*4 - 0x50]
movdqu xmm3, xmmword [ebp + esi*4 - 0x40]
movdqu xmm4, xmmword [ebp + esi*4 - 0x30]
por xmm4, xmm1
por xmm4, xmm2
movdqu xmm2, xmmword [ebp + esi*4 - 0x20]
por xmm2, xmm3
por xmm2, xmm0
movdqu xmm0, xmmword [ebp + esi*4 - 0x10]
por xmm0, xmm4
movdqu xmm1, xmmword [ebp + esi*4]
por xmm1, xmm2
add esi, 0x20
add edi, 0xfffffffc
jne 0x5dc700
mov edi, dword [esp + 0xc]
and edi, 0xfffffff8
test edx, edx
je 0x5dc791
add esi, ecx
mov ebp, dword [esp + 4]
lea esi, [esi*4 + 0x10]
add esi, ebp
shl edx, 5
xor ebp, ebp
movdqu xmm2, xmmword [esi + ebp - 0x10]
por xmm0, xmm2
movdqu xmm2, xmmword [esi + ebp]
por xmm1, xmm2
add ebp, 0x20
cmp edx, ebp
jne 0x5dc777
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd esi, xmm0
cmp dword [esp + 0xc], edi
je 0x5dc7c2
add ecx, edi
mov edi, dword [esp + 4]
mov edx, dword [esp]
or esi, dword [edi + ecx*4]
inc ecx
cmp edx, ecx
jne 0x5dc7ba
test esi, esi
mov edi, dword [esp + 0x34]
mov ebp, dword [esp + 8]
jne 0x5dc7d8
cmp dword [eax + 0xc], 0
je 0x5dc8a5
push dword [edi + 0x34]
mov esi, dword [esp + 0x1c]
push esi
push dword [edi + 4]
push dword [edi + 0x40]
push ebp
push dword [esp + 0x28]
call sym.adb.exe_BN_mod_exp_mont_consttime
add esp, 0x18
test eax, eax
je 0x5dc89e
cmp dword [edi + 8], 0
je 0x5dc83e
push esi
call sym.adb.exe_BN_CTX_get
add esp, 4
test eax, eax
je 0x5dc886
push dword [edi + 0x34]
push esi
push dword [edi + 4]
push dword [edi + 8]
push dword [esp + 0x24]
push eax
mov dword [esp + 0x18], eax
call sym.adb.exe_BN_mod_exp_mont
add esp, 0x18
test eax, eax
mov eax, dword [esp]
je 0x5dc886
push ebp
push eax
call sym.adb.exe_BN_equal_consttime
add esp, 8
test eax, eax
je 0x5dc886
test byte [esp + 0x10], 8
jne 0x5dc85e
push esi
push dword [edi + 0x34]
push dword [ebx + 4]
mov eax, dword [esp + 0x20]
push eax
push eax
call sym.adb.exe_BN_mod_mul_montgomery
add esp, 0x14
test eax, eax
je 0x5dc89e
push dword [esp + 0x14]
push dword [esp + 0x44]
push dword [esp + 0x40]
call sym.adb.exe_BN_bn2bin_padded
add esp, 0xc
mov ebp, 1
test eax, eax
jne 0x5dc592
push 0x32e
jmp 0x5dc88b
push 0x31c
push str.external_boringssl_src_crypto_fipsmodule_rsa_rsa_impl.c
push 0x44
push 0
push 4
call sym.adb.exe_ERR_put_error
add esp, 0x14
xor ebp, ebp
jmp 0x5dc592
mov ecx, dword [edi + 0x3c]
mov ecx, dword [ecx + 0x18]
mov edx, dword [eax + 4]
mov esi, edx
sub esi, ecx
mov dword [esp], esi
jbe 0x5dc9d2
mov eax, dword [eax]
xor esi, esi
cmp dword [esp], 8
jb 0x5dc9ba
mov esi, dword [esp]
add esi, 0xfffffff8
mov edi, esi
shr edi, 3
inc edi
mov ebp, edi
and ebp, 3
mov dword [esp + 4], ebp
cmp esi, 0x18
jae 0x5dc8ef
pxor xmm0, xmm0
xor esi, esi
pxor xmm1, xmm1
jmp 0x5dc95a
and edi, 0xfffffffc
lea ebp, [eax + ecx*4]
add ebp, 0x70
pxor xmm0, xmm0
xor esi, esi
pxor xmm1, xmm1
movdqu xmm2, xmmword [ebp + esi*4 - 0x70]
por xmm2, xmm0
movdqu xmm0, xmmword [ebp + esi*4 - 0x60]
por xmm0, xmm1
movdqu xmm1, xmmword [ebp + esi*4 - 0x50]
movdqu xmm3, xmmword [ebp + esi*4 - 0x40]
movdqu xmm4, xmmword [ebp + esi*4 - 0x30]
por xmm4, xmm1
por xmm4, xmm2
movdqu xmm2, xmmword [ebp + esi*4 - 0x20]
por xmm2, xmm3
por xmm2, xmm0
movdqu xmm0, xmmword [ebp + esi*4 - 0x10]
por xmm0, xmm4
movdqu xmm1, xmmword [ebp + esi*4]
por xmm1, xmm2
add esi, 0x20
add edi, 0xfffffffc
jne 0x5dc902
mov edi, dword [esp]
and edi, 0xfffffff8
mov dword [esp + 0xc], edi
mov edi, dword [esp + 4]
test edi, edi
je 0x5dc993
add esi, ecx
lea esi, [eax + esi*4]
add esi, 0x10
shl edi, 5
xor ebp, ebp
movdqu xmm2, xmmword [esi + ebp - 0x10]
por xmm0, xmm2
movdqu xmm2, xmmword [esi + ebp]
por xmm1, xmm2
add ebp, 0x20
cmp edi, ebp
jne 0x5dc979
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd esi, xmm0
mov edi, dword [esp + 0xc]
cmp dword [esp], edi
je 0x5dc9c2
add ecx, dword [esp + 0xc]
or esi, dword [eax + ecx*4]
inc ecx
cmp edx, ecx
jne 0x5dc9ba
test esi, esi
mov edi, dword [esp + 0x34]
mov ebp, dword [esp + 8]
jne 0x5dc7d8
mov ecx, dword [esp + 0x14]
mov edx, ebp
mov esi, dword [esp + 0x18]
push esi
push edi
call fcn.005dd080
add esp, 8
test eax, eax
jne 0x5dc7fb
jmp 0x5dc89e