Function at 0x473950
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x3c
mov ebx, dword [esp + 0x50]
cmp dword [ebx + 4], 0
je 0x473a2d
cmp dword [ebx + 0xc], 0
je 0x473a2d
push 0x2c
call sym.adb.exe_OPENSSL_malloc
add esp, 4
test eax, eax
je 0x473a54
mov edi, eax
mov dword [eax + 4], 0
mov dword [eax], 0
mov dword [eax + 0xc], 0
mov dword [eax + 8], 0
mov dword [eax + 0x14], 0
mov dword [eax + 0x10], 0
mov dword [eax + 0x1c], 0
mov dword [eax + 0x18], 0
mov dword [eax + 0x24], 0
mov dword [eax + 0x20], 0
mov dword [eax + 0x28], 0
push eax
call sym.adb.exe_BN_CTX_start
add esp, 4
push edi
call sym.adb.exe_BN_CTX_get
add esp, 4
mov ebp, eax
push edi
call sym.adb.exe_BN_CTX_get
add esp, 4
test ebp, ebp
je 0x473a63
mov esi, eax
test eax, eax
je 0x473a63
push ebp
push dword [esp + 0x60]
push dword [esp + 0x60]
call sym.adb.exe_BN_bin2bn
add esp, 0xc
test eax, eax
je 0x473a7b
push dword [ebx + 4]
push ebp
call sym.adb.exe_BN_ucmp
add esp, 8
test eax, eax
js 0x473b4e
push 0x2ae
push str.external_boringssl_src_crypto_fipsmodule_rsa_rsa_impl.c
push 0x73
jmp 0x473a6f
push 0x291
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, 0x3c
pop esi
pop edi
pop ebx
pop ebp
ret
push 0x7f
push str.external_boringssl_src_crypto_fipsmodule_bn_ctx.c
push 0x41
push 0
push 3
jmp 0x473a40
push 0x2a4
push str.external_boringssl_src_crypto_fipsmodule_rsa_rsa_impl.c
push 0x41
push 0
push 4
call sym.adb.exe_ERR_put_error
add esp, 0x14
xor ebp, ebp
mov dword [esp + 0x20], 0
xor esi, esi
mov eax, dword [edi + 0x24]
test eax, eax
je 0x473a94
dec eax
mov dword [edi + 0x24], eax
jmp 0x473b06
mov ecx, dword [edi + 0x18]
mov eax, dword [edi + 0x14]
mov dword [esp + 0x1c], esi
lea edx, [ecx - 1]
mov dword [edi + 0x18], edx
mov ebx, dword [edi + 0x20]
mov eax, dword [eax + ecx*4 - 4]
mov edx, ebx
sub edx, eax
jbe 0x473af4
mov esi, dword [edi + 0xc]
mov ecx, esi
sub ecx, edx
test edx, edx
mov dword [edi + 0xc], ecx
je 0x473af4
dec esi
mov edx, eax
and esi, 0xf
sub edx, ebx
nop word [eax + eax]
test esi, esi
je 0x473ae0
dec esi
inc edx
jne 0x473ad0
jmp 0x473af4
mov ecx, dword [edi + 4]
mov esi, 0xf
mov ecx, dword [ecx + 0x140]
mov dword [edi + 4], ecx
inc edx
jne 0x473ad0
mov ebx, dword [esp + 0x50]
mov esi, dword [esp + 0x1c]
mov dword [edi + 0x20], eax
mov dword [edi + 0x28], 0
push edi
call sym.adb.exe_BN_CTX_free
add esp, 4
mov eax, dword [esp + 0x20]
test eax, eax
je 0x473a4a
cmp esi, 0x400
jne 0x473b2b
push eax
call fcn.0046f500
jmp 0x473b46
mov edi, esi
lea esi, [ebx + 0x30]
push esi
call sym.adb.exe_CRYPTO_MUTEX_lock_write
add esp, 4
mov eax, dword [ebx + 0x58]
mov byte [eax + edi], 0
push esi
call sym.adb.exe_CRYPTO_MUTEX_unlock_write
add esp, 4
jmp 0x473a4a
mov ecx, ebx
mov edx, edi
call fcn.00474ac0
test eax, eax
je 0x473b7f
mov ecx, dword [ebx + 0x2c]
cmp dword [ebx + 8], 0
jne 0x473b90
mov eax, ecx
and eax, 8
jne 0x473b90
push 0x2be
push str.external_boringssl_src_crypto_fipsmodule_rsa_rsa_impl.c
push 0x82
jmp 0x473a6f
push 0x2b3
push str.external_boringssl_src_crypto_fipsmodule_rsa_rsa_impl.c
push 0x44
jmp 0x473a6f
xor eax, eax
test cl, 8
mov dword [esp + 0x34], ecx
mov dword [esp + 0x20], 0
mov dword [esp + 8], esi
jne 0x473d77
lea eax, [ebx + 0x30]
mov dword [esp], eax
push eax
call sym.adb.exe_CRYPTO_MUTEX_lock_write
add esp, 4
mov eax, ebx
mov ebx, dword [ebx + 0x50]
test ebx, ebx
je 0x473bdf
mov esi, eax
mov eax, dword [eax + 0x58]
xor ecx, ecx
cmp byte [eax + ecx], 0
je 0x473bed
inc ecx
cmp ecx, ebx
jb 0x473bca
mov dword [esp + 0x1c], 0
jmp 0x473c18
mov esi, eax
mov dword [esp + 0x1c], 0
xor ebx, ebx
jmp 0x473c18
mov byte [eax + ecx], 1
mov ebx, esi
mov dword [esp + 0x1c], ecx
mov eax, dword [esi + 0x54]
mov eax, dword [eax + ecx*4]
test eax, eax
je 0x473c15
push dword [esp]
mov esi, eax
call sym.adb.exe_CRYPTO_MUTEX_unlock_write
mov eax, esi
add esp, 4
jmp 0x473d56
mov ebx, dword [ebx + 0x50]
push dword [esp]
call sym.adb.exe_CRYPTO_MUTEX_unlock_write
add esp, 4
call fcn.0046f400
test eax, eax
je 0x473cea
cmp ebx, 0x3ff
jbe 0x473c47
mov dword [esp + 0x1c], 0x400
mov ebx, esi
jmp 0x473d56
mov dword [esp + 0x20], eax
push dword [esp]
call sym.adb.exe_CRYPTO_MUTEX_lock_write
add esp, 4
mov eax, dword [esi + 0x50]
mov ebx, esi
lea eax, [eax*4 + 4]
push eax
call sym.adb.exe_OPENSSL_malloc
add esp, 4
test eax, eax
je 0x473cd1
mov esi, eax
mov eax, dword [ebx + 0x50]
lea ecx, [eax*4]
test ecx, ecx
je 0x473c8f
push ecx
push dword [ebx + 0x54]
push esi
call sub.msvcrt.dll_memcpy
add esp, 0xc
mov eax, dword [ebx + 0x50]
mov ecx, dword [esp + 0x20]
mov dword [esi + eax*4], ecx
mov eax, dword [ebx + 0x50]
inc eax
push eax
call sym.adb.exe_OPENSSL_malloc
add esp, 4
test eax, eax
je 0x473cc8
mov ecx, dword [ebx + 0x50]
mov dword [esp + 4], eax
test ecx, ecx
je 0x473d17
push ecx
push dword [ebx + 0x58]
push eax
call sub.msvcrt.dll_memcpy
mov eax, dword [esp + 0x10]
add esp, 0xc
mov ecx, dword [ebx + 0x50]
jmp 0x473d19
push esi
call sym.adb.exe_OPENSSL_free
add esp, 4
mov esi, ebx
push dword [esp]
call sym.adb.exe_CRYPTO_MUTEX_unlock_write
add esp, 4
push dword [esp + 0x20]
call fcn.0046f500
add esp, 4
push 0x2c5
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
mov ebx, esi
mov esi, dword [esp + 0x1c]
xor ebp, ebp
mov dword [esp + 0x20], 0
jmp 0x473a87
xor ecx, ecx
mov byte [eax + ecx], 1
mov eax, dword [ebx + 0x50]
mov dword [esp + 0x1c], eax
push dword [ebx + 0x54]
call sym.adb.exe_OPENSSL_free
add esp, 4
mov dword [ebx + 0x54], esi
push dword [ebx + 0x58]
call sym.adb.exe_OPENSSL_free
add esp, 4
mov eax, dword [esp + 4]
mov dword [ebx + 0x58], eax
inc dword [ebx + 0x50]
push dword [esp]
call sym.adb.exe_CRYPTO_MUTEX_unlock_write
add esp, 4
mov eax, dword [esp + 0x20]
push edi
push dword [ebx + 0x34]
push dword [ebx + 8]
mov dword [esp + 0x2c], eax
push eax
push ebp
call fcn.0046f580
add esp, 0x14
test eax, eax
je 0x4744fa
mov eax, dword [esp + 0x1c]
mov ecx, dword [ebx + 0x10]
mov esi, ebx
mov dword [esp + 0x1c], eax
test ecx, ecx
mov dword [esp], ecx
je 0x473e7c
mov ebx, dword [esi + 0x14]
test ebx, ebx
je 0x473e7c
cmp dword [esi + 8], 0
je 0x473e7c
cmp dword [esi + 0x18], 0
je 0x473e7c
cmp dword [esi + 0x1c], 0
je 0x473e7c
cmp dword [esi + 0x20], 0
je 0x473e7c
cmp dword [ebx + 0xc], 0
jne 0x473e7c
mov ecx, dword [esi + 0x38]
mov eax, dword [ebx + 4]
mov edx, dword [ecx + 0x18]
mov ecx, eax
sub ecx, edx
jbe 0x473e6f
mov esi, dword [ebx]
xor ebx, ebx
cmp ecx, 8
mov dword [esp + 4], edx
mov dword [esp + 0xc], ecx
mov dword [esp + 0x10], esi
jb 0x473e52
mov edx, dword [esp + 0xc]
mov esi, dword [esp + 4]
mov ebx, dword [esp + 0x10]
pxor xmm0, xmm0
pxor xmm1, xmm1
and edx, 0xfffffff8
lea ebx, [ebx + esi*4 + 0x10]
add esi, edx
mov dword [esp + 0x14], edx
mov dword [esp + 4], esi
movdqu xmm2, xmmword [ebx - 0x10]
movdqu xmm3, xmmword [ebx]
add ebx, 0x20
add edx, 0xfffffff8
por xmm0, xmm2
por xmm1, xmm3
jne 0x473e15
mov edx, dword [esp + 0xc]
por xmm1, xmm0
pshufd xmm0, xmm1, 0x4e
por xmm0, xmm1
pshufd xmm1, xmm0, 0xe5
cmp edx, dword [esp + 0x14]
por xmm1, xmm0
movd ebx, xmm1
je 0x473e67
mov esi, dword [esp + 4]
mov edx, dword [esp + 0x10]
sub eax, esi
lea edx, [edx + esi*4]
or ebx, dword [edx]
add edx, 4
dec eax
jne 0x473e5f
mov esi, dword [esp + 0x50]
test ebx, ebx
jne 0x473e7c
mov eax, dword [esp]
cmp dword [eax + 0xc], 0
je 0x4742eb
push dword [esi + 0x34]
push edi
push dword [esi + 4]
push dword [esi + 0x40]
push ebp
push dword [esp + 0x1c]
call sym.adb.exe_BN_mod_exp_mont_consttime
add esp, 0x18
test eax, eax
mov ebx, esi
je 0x4744fa
cmp dword [ebx + 8], 0
mov esi, dword [esp + 0x1c]
je 0x4740b7
push edi
call sym.adb.exe_BN_CTX_get
add esp, 4
test eax, eax
je 0x474098
push dword [ebx + 0x34]
push edi
push dword [ebx + 4]
push dword [ebx + 8]
push dword [esp + 0x18]
push eax
mov dword [esp + 0x1c], eax
call sym.adb.exe_BN_mod_exp_mont
add esp, 0x18
test eax, eax
mov eax, dword [esp + 4]
je 0x474098
mov ebx, dword [eax + 4]
mov eax, dword [ebp + 4]
xor edx, edx
mov dword [esp + 0x10], ebx
sub ebx, eax
mov dword [esp], eax
mov dword [esp + 0xc], ebx
jge 0x473f7e
mov esi, dword [esp]
mov ecx, dword [esp + 0x10]
mov ebx, dword [ebp]
xor edx, edx
sub esi, ecx
cmp esi, 7
jbe 0x473f6e
mov edx, dword [esp + 0x10]
mov eax, esi
pxor xmm0, xmm0
pxor xmm1, xmm1
mov dword [esp + 0x14], ebx
and eax, 0xfffffff8
mov dword [esp + 0x18], eax
lea ecx, [edx + eax]
lea edx, [ebx + edx*4 + 0x10]
movdqu xmm2, xmmword [edx - 0x10]
movdqu xmm3, xmmword [edx]
add edx, 0x20
add eax, 0xfffffff8
por xmm0, xmm2
por xmm1, xmm3
jne 0x473f31
por xmm1, xmm0
cmp esi, dword [esp + 0x18]
mov ebx, dword [esp + 0x14]
pshufd xmm0, xmm1, 0x4e
por xmm0, xmm1
pshufd xmm1, xmm0, 0xe5
por xmm1, xmm0
movd edx, xmm1
je 0x473f7e
mov eax, dword [esp]
lea ebx, [ebx + ecx*4]
sub eax, ecx
or edx, dword [ebx]
add ebx, 4
dec eax
jne 0x473f76
mov ecx, dword [esp + 0x10]
cmp dword [esp], ecx
jge 0x474012
mov eax, dword [esp + 4]
mov ebx, dword [eax]
mov eax, dword [esp + 0xc]
cmp eax, 7
ja 0x473f9f
mov esi, dword [esp]
jmp 0x474003
mov dword [esp + 0x14], ebx
movd xmm1, edx
mov ebx, dword [esp]
and eax, 0xfffffff8
pxor xmm0, xmm0
mov edx, dword [esp + 0x14]
lea esi, [ebx + eax]
lea edx, [edx + ebx*4 + 0x10]
mov ebx, eax
mov dword [esp + 0x18], esi
movdqu xmm2, xmmword [edx - 0x10]
movdqu xmm3, xmmword [edx]
add edx, 0x20
add ebx, 0xfffffff8
por xmm1, xmm2
por xmm0, xmm3
jne 0x473fc2
por xmm0, xmm1
cmp dword [esp + 0xc], eax
mov ebx, dword [esp + 0x14]
mov esi, dword [esp + 0x18]
pshufd xmm1, xmm0, 0x4e
por xmm1, xmm0
pshufd xmm0, xmm1, 0xe5
por xmm0, xmm1
movd edx, xmm0
je 0x474012
mov eax, ecx
lea ebx, [ebx + esi*4]
sub eax, esi
or edx, dword [ebx]
add ebx, 4
dec eax
jne 0x47400a
mov esi, dword [esp]
cmp ecx, esi
cmovle esi, ecx
test esi, esi
jle 0x474082
mov eax, dword [esp + 4]
mov ebx, esi
mov esi, dword [ebp]
xor ecx, ecx
cmp ebx, 3
mov dword [esp], ebx
mov eax, dword [eax]
jbe 0x474074
mov ecx, dword [esp]
movd xmm0, edx
xor edx, edx
mov ebx, ecx
and ecx, 0xfffffffc
movdqu xmm1, xmmword [eax + edx*4]
movdqu xmm2, xmmword [esi + edx*4]
add edx, 4
cmp ecx, edx
pxor xmm2, xmm1
por xmm0, xmm2
jne 0x474041
pshufd xmm1, xmm0, 0x4e
cmp ebx, ecx
por xmm1, xmm0
pshufd xmm0, xmm1, 0xe5
por xmm0, xmm1
movd edx, xmm0
je 0x474082
mov ebx, dword [esi + ecx*4]
xor ebx, dword [eax + ecx*4]
inc ecx
or edx, ebx
cmp ecx, dword [esp]
jl 0x474074
mov eax, dword [ebp + 0xc]
mov ecx, dword [esp + 4]
mov ebx, dword [esp + 0x50]
mov esi, dword [esp + 0x1c]
xor eax, dword [ecx + 0xc]
or eax, edx
je 0x4740b7
push 0x2eb
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 0x473a87
test byte [esp + 0x34], 8
jne 0x4740db
push edi
push dword [ebx + 0x34]
mov eax, dword [esp + 0x28]
push dword [eax + 4]
mov eax, dword [esp + 0x14]
push eax
push eax
call sym.adb.exe_BN_mod_mul_montgomery
add esp, 0x14
test eax, eax
je 0x4740b0
mov eax, dword [esp + 8]
mov ebp, dword [esp + 0x5c]
mov ecx, dword [eax]
mov eax, dword [eax + 4]
lea edx, [eax*4]
cmp edx, ebp
jbe 0x4741b4
lea edx, [eax*4]
mov dword [esp], ecx
mov dword [esp + 8], eax
mov esi, ebx
xor eax, eax
mov ecx, edx
sub ecx, ebp
cmp ecx, 8
jb 0x474184
mov eax, dword [esp + 0x5c]
mov ebx, dword [esp]
mov dword [esp + 4], ecx
and ecx, 0xfffffff8
pxor xmm1, xmm1
pxor xmm2, xmm2
pxor xmm0, xmm0
mov dword [esp + 0x34], ecx
lea ebp, [ecx + eax]
lea eax, [ebx + eax + 4]
movd xmm3, dword [eax - 4]
movd xmm4, dword [eax]
add eax, 8
add ecx, 0xfffffff8
punpcklbw xmm3, xmm1
punpcklbw xmm4, xmm1
punpcklwd xmm3, xmm1
punpcklwd xmm4, xmm1
por xmm2, xmm3
por xmm0, xmm4
jne 0x474137
mov ecx, dword [esp + 4]
por xmm0, xmm2
pshufd xmm1, xmm0, 0x4e
por xmm1, xmm0
pshufd xmm0, xmm1, 0xe5
cmp ecx, dword [esp + 0x34]
por xmm0, xmm1
movd eax, xmm0
je 0x474193
sub edx, ebp
add ebp, dword [esp]
movzx ebx, byte [ebp]
inc ebp
or eax, ebx
dec edx
jne 0x474189
test eax, eax
mov eax, dword [esp + 0x5c]
mov ebx, esi
mov esi, dword [esp + 0x1c]
mov ecx, dword [esp]
mov edx, eax
mov eax, dword [esp + 8]
je 0x4741b4
push 0x2fd
jmp 0x47409d
test edx, edx
mov dword [esp + 8], edx
je 0x4742c4
xor ebp, ebp
cmp dword [esp + 8], 0x1f
ja 0x4741d0
mov edx, ecx
jmp 0x4742ab
shl eax, 2
mov edx, eax
mov eax, dword [esp + 0x5c]
cmp edx, eax
cmova edx, eax
not edx
add edx, eax
mov eax, dword [esp + 0x54]
lea eax, [eax + edx + 1]
mov edx, ecx
mov ecx, dword [esp + 8]
lea ecx, [edx + ecx]
cmp eax, ecx
jae 0x47420a
mov eax, dword [esp + 0x5c]
mov ecx, dword [esp + 0x54]
lea eax, [ecx + eax]
cmp edx, eax
jb 0x4742ab
mov ebp, dword [esp + 8]
mov dword [esp], edx
lea ecx, [edx + 0x10]
mov eax, dword [esp + 0x5c]
mov edx, dword [esp + 0x54]
pxor xmm0, xmm0
and ebp, 0xffffffe0
lea eax, [edx + eax - 0x10]
mov edx, ebp
movdqu xmm1, xmmword [ecx - 0x10]
movdqu xmm2, xmmword [ecx]
add ecx, 0x20
movdqa xmm3, xmm1
punpckhbw xmm1, xmm0
punpcklbw xmm3, xmm0
pshufd xmm1, xmm1, 0x4e
pshufd xmm3, xmm3, 0x4e
pshuflw xmm1, xmm1, 0x1b
pshuflw xmm3, xmm3, 0x1b
pshufhw xmm1, xmm1, 0x1b
pshufhw xmm3, xmm3, 0x1b
packuswb xmm1, xmm3
movdqu xmmword [eax], xmm1
movdqa xmm1, xmm2
punpckhbw xmm2, xmm0
punpcklbw xmm1, xmm0
pshufd xmm2, xmm2, 0x4e
pshufd xmm1, xmm1, 0x4e
pshuflw xmm2, xmm2, 0x1b
pshuflw xmm1, xmm1, 0x1b
pshufhw xmm2, xmm2, 0x1b
pshufhw xmm1, xmm1, 0x1b
packuswb xmm2, xmm1
movdqu xmmword [eax - 0x10], xmm2
add eax, 0xffffffe0
add edx, 0xffffffe0
jne 0x474229
cmp dword [esp + 8], ebp
mov edx, dword [esp]
je 0x4742c4
mov eax, dword [esp + 0x5c]
dec eax
sub eax, ebp
add eax, dword [esp + 0x54]
movzx ecx, byte [edx + ebp]
inc ebp
mov byte [eax], cl
dec eax
cmp ebp, dword [esp + 8]
jb 0x4742b6
mov eax, dword [esp + 0x5c]
mov ebp, 1
sub eax, dword [esp + 8]
je 0x473a87
push eax
push 0
push dword [esp + 0x5c]
call sub.msvcrt.dll_memset
add esp, 0xc
jmp 0x473a87
mov ecx, dword [esi + 0x3c]
mov eax, dword [esp]
mov ebx, dword [ecx + 0x18]
mov ecx, dword [eax + 4]
mov edx, ecx
mov dword [esp + 4], ebx
sub edx, ebx
jbe 0x47438f
mov eax, dword [esp]
mov eax, dword [eax]
mov dword [esp], eax
xor eax, eax
cmp edx, 8
jb 0x47436f
mov esi, dword [esp + 4]
mov eax, dword [esp]
mov ebx, edx
pxor xmm0, xmm0
pxor xmm1, xmm1
and ebx, 0xfffffff8
mov dword [esp + 0x10], ebx
lea eax, [eax + esi*4 + 0x10]
add esi, ebx
mov dword [esp + 4], esi
movdqu xmm2, xmmword [eax - 0x10]
movdqu xmm3, xmmword [eax]
add eax, 0x20
add ebx, 0xfffffff8
por xmm0, xmm2
por xmm1, xmm3
jne 0x474336
por xmm1, xmm0
cmp edx, dword [esp + 0x10]
pshufd xmm0, xmm1, 0x4e
por xmm0, xmm1
pshufd xmm1, xmm0, 0xe5
por xmm1, xmm0
movd eax, xmm1
je 0x474383
mov edx, dword [esp + 4]
mov ebx, dword [esp]
sub ecx, edx
lea edx, [ebx + edx*4]
or eax, dword [edx]
add edx, 4
dec ecx
jne 0x47437b
mov esi, dword [esp + 0x50]
test eax, eax
jne 0x473e7c
push edi
call sym.adb.exe_BN_CTX_start
add esp, 4
push edi
call sym.adb.exe_BN_CTX_get
add esp, 4
mov ebx, eax
push edi
call sym.adb.exe_BN_CTX_get
add esp, 4
test ebx, ebx
mov dword [esp + 4], eax
mov dword [esp], 0
mov dword [esp + 0x10], ebx
je 0x474486
cmp dword [esp + 4], 0
je 0x474486
mov ecx, dword [esp + 0x50]
mov edx, edi
call fcn.00474ac0
test eax, eax
je 0x474486
mov eax, dword [esp + 0x50]
mov esi, dword [eax + 0x48]
mov ecx, dword [eax + 0x44]
mov edx, dword [eax + 0x38]
mov dword [esp + 0x28], esi
mov esi, dword [eax + 0x3c]
mov eax, dword [eax + 0x10]
mov dword [esp + 0x18], ecx
mov dword [esp + 0xc], edx
test eax, eax
je 0x474450
mov ecx, dword [esp + 0x50]
mov ecx, dword [ecx + 0x14]
test ecx, ecx
je 0x474450
mov ebx, dword [eax + 0xc]
cmp ebx, dword [ecx + 0xc]
jne 0x474790
push ecx
push eax
call sym.adb.exe_BN_ucmp
add esp, 8
mov ecx, eax
neg ecx
test ebx, ebx
cmove ecx, eax
test ecx, ecx
js 0x474454
mov eax, dword [esp + 0xc]
mov edx, dword [esp + 0x28]
mov ecx, dword [esp + 0x18]
mov dword [esp + 0xc], esi
mov dword [esp + 0x14], eax
mov dword [esp + 0x24], edx
mov dword [esp + 0x28], ecx
jmp 0x474460
test eax, eax
je 0x474432
mov eax, dword [esp + 0x18]
mov dword [esp + 0x14], esi
mov dword [esp + 0x24], eax
mov eax, dword [esp + 0x14]
cmp dword [eax + 0x20], 0
je 0x474505
push 0x318
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
mov eax, dword [edi + 0x24]
test eax, eax
je 0x474493
dec eax
mov dword [edi + 0x24], eax
jmp 0x4744ec
mov ecx, dword [edi + 0x18]
mov eax, dword [edi + 0x14]
lea edx, [ecx - 1]
mov dword [edi + 0x18], edx
mov ebx, dword [edi + 0x20]
mov eax, dword [eax + ecx*4 - 4]
mov edx, ebx
mov esi, eax
sub edx, eax
jbe 0x4744e2
mov eax, dword [edi + 0xc]
mov ecx, eax
sub ecx, edx
test edx, edx
mov dword [edi + 0xc], ecx
je 0x4744e2
dec eax
mov edx, esi
and eax, 0xf
sub edx, ebx
test eax, eax
je 0x4744ce
dec eax
inc edx
jne 0x4744c4
jmp 0x4744e2
mov eax, dword [edi + 4]
mov eax, dword [eax + 0x140]
mov dword [edi + 4], eax
mov eax, 0xf
inc edx
jne 0x4744c4
mov dword [edi + 0x20], esi
mov dword [edi + 0x28], 0
cmp dword [esp], 0
mov ebx, dword [esp + 0x50]
jne 0x473e9d
mov esi, dword [esp + 0x1c]
xor ebp, ebp
jmp 0x473a87
mov eax, dword [esp + 0x50]
mov ecx, dword [esp + 0x14]
mov eax, dword [eax + 0x34]
mov dword [esp + 0x38], eax
lea eax, [ecx + 0x14]
mov dword [esp + 0x30], eax
mov eax, dword [esp + 0xc]
mov ebx, dword [eax + 0x18]
mov eax, dword [ecx + 0x18]
mov edx, eax
mov dword [esp + 0x18], ebx
sub edx, ebx
jbe 0x4745b9
mov ecx, dword [esp + 0x30]
xor ebx, ebx
cmp edx, 8
mov ecx, dword [ecx]
mov dword [esp + 0x2c], ecx
jb 0x47459c
mov ecx, dword [esp + 0x18]
mov ebx, dword [esp + 0x2c]
mov esi, edx
pxor xmm0, xmm0
pxor xmm1, xmm1
and esi, 0xfffffff8
lea ebx, [ebx + ecx*4 + 0x10]
add ecx, esi
mov dword [esp + 0x18], ecx
mov ecx, esi
movdqu xmm2, xmmword [ebx - 0x10]
movdqu xmm3, xmmword [ebx]
add ebx, 0x20
add ecx, 0xfffffff8
por xmm0, xmm2
por xmm1, xmm3
jne 0x474565
por xmm1, xmm0
cmp edx, esi
pshufd xmm0, xmm1, 0x4e
por xmm0, xmm1
pshufd xmm1, xmm0, 0xe5
por xmm1, xmm0
movd ebx, xmm1
je 0x4745b1
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x2c]
sub eax, ecx
lea ecx, [edx + ecx*4]
or ebx, dword [ecx]
add ecx, 4
dec eax
jne 0x4745a9
test ebx, ebx
jne 0x47446e
push edi
push dword [esp + 0x10]
push ebp
push dword [esp + 0x1c]
call sym.adb.exe_BN_from_montgomery
add esp, 0x10
test eax, eax
je 0x474486
push edi
mov eax, dword [esp + 0x10]
push eax
push eax
mov eax, dword [esp + 0x1c]
push eax
push eax
call sym.adb.exe_BN_mod_mul_montgomery
add esp, 0x14
test eax, eax
je 0x474486
mov eax, dword [esp + 0xc]
lea ecx, [eax + 0x14]
push eax
push edi
mov dword [esp + 0x20], ecx
push ecx
push dword [esp + 0x30]
push dword [esp + 0x20]
push dword [esp + 0x18]
call sym.adb.exe_BN_mod_exp_mont_consttime
add esp, 0x18
test eax, eax
je 0x474486
mov eax, dword [esp + 0xc]
cmp dword [eax + 0x20], 0
jne 0x47446e
mov eax, dword [esp + 0x14]
mov ecx, dword [eax + 0x18]
mov eax, dword [esp + 0xc]
mov eax, dword [eax + 0x18]
mov dword [esp + 0x24], ecx
mov edx, eax
sub edx, ecx
jbe 0x4746ca
mov ecx, dword [esp + 0x18]
xor ebx, ebx
cmp edx, 8
mov ecx, dword [ecx]
mov dword [esp + 0x2c], ecx
jb 0x4746ad
mov ecx, dword [esp + 0x24]
mov ebx, dword [esp + 0x2c]
mov esi, edx
pxor xmm0, xmm0
pxor xmm1, xmm1
and esi, 0xfffffff8
lea ebx, [ebx + ecx*4 + 0x10]
add ecx, esi
mov dword [esp + 0x24], ecx
mov ecx, esi
movdqu xmm2, xmmword [ebx - 0x10]
movdqu xmm3, xmmword [ebx]
add ebx, 0x20
add ecx, 0xfffffff8
por xmm0, xmm2
por xmm1, xmm3
jne 0x474676
por xmm1, xmm0
cmp edx, esi
pshufd xmm0, xmm1, 0x4e
por xmm0, xmm1
pshufd xmm1, xmm0, 0xe5
por xmm1, xmm0
movd ebx, xmm1
je 0x4746c2
mov ecx, dword [esp + 0x24]
mov edx, dword [esp + 0x2c]
sub eax, ecx
lea ecx, [edx + ecx*4]
or ebx, dword [ecx]
add ecx, 4
dec eax
jne 0x4746ba
test ebx, ebx
jne 0x47446e
push edi
push dword [esp + 0x18]
push ebp
push dword [esp + 0x1c]
call sym.adb.exe_BN_from_montgomery
add esp, 0x10
test eax, eax
je 0x474486
push edi
mov eax, dword [esp + 0x18]
push eax
push eax
mov eax, dword [esp + 0x1c]
push eax
push eax
call sym.adb.exe_BN_mod_mul_montgomery
add esp, 0x14
test eax, eax
je 0x474486
push dword [esp + 0x14]
push edi
push dword [esp + 0x38]
push dword [esp + 0x34]
push dword [esp + 0x20]
push dword [esp + 0x1c]
call sym.adb.exe_BN_mod_exp_mont_consttime
add esp, 0x18
test eax, eax
je 0x474486
push edi
push dword [esp + 0x34]
push dword [esp + 0xc]
mov eax, dword [esp + 0x14]
push eax
push eax
call fcn.00449150
add esp, 0x14
test eax, eax
je 0x474486
push edi
push dword [esp + 0x18]
mov eax, dword [esp + 0x58]
push dword [eax + 0x4c]
mov eax, dword [esp + 0x14]
push eax
push eax
call sym.adb.exe_BN_mod_mul_montgomery
add esp, 0x14
test eax, eax
je 0x474486
mov eax, dword [esp + 8]
cmp dword [eax + 0xc], 0
jne 0x47477b
mov eax, dword [esp + 0xc]
cmp dword [eax + 0x20], 0
je 0x47479d
push 0x28d
push str.external_boringssl_src_crypto_fipsmodule_bn_mul.c
push 0x6d
push 0
push 3
jmp 0x47447e
test ebx, ebx
jne 0x474454
jmp 0x474432
mov ecx, dword [esp + 8]
mov edx, ecx
push edi
push dword [esp + 0x1c]
call fcn.00454060
add esp, 8
test eax, eax
je 0x474486
push dword [esp + 4]
mov eax, dword [esp + 0xc]
push eax
push eax
call fcn.00444610
add esp, 0xc
test eax, eax
je 0x474486
mov eax, dword [esp + 0x38]
mov ecx, dword [eax + 0x18]
mov eax, dword [esp + 8]
mov eax, dword [eax + 4]
mov dword [esp + 4], ecx
mov edx, eax
sub edx, ecx
jbe 0x47489a
mov ecx, dword [esp + 8]
mov ebx, dword [esp + 4]
mov ecx, dword [ecx]
mov dword [esp + 0x10], ebx
mov dword [esp], ecx
xor ecx, ecx
cmp edx, 8
jb 0x47485e
mov ecx, dword [esp + 4]
mov esi, edx
pxor xmm0, xmm0
pxor xmm1, xmm1
and esi, 0xfffffff8
lea ebx, [ecx + esi]
mov dword [esp + 0x10], ebx
mov ebx, dword [esp]
lea ecx, [ebx + ecx*4 + 0x10]
mov ebx, esi
movdqu xmm2, xmmword [ecx - 0x10]
movdqu xmm3, xmmword [ecx]
add ecx, 0x20
add ebx, 0xfffffff8
por xmm0, xmm2
por xmm1, xmm3
jne 0x474827
por xmm1, xmm0
cmp edx, esi
pshufd xmm0, xmm1, 0x4e
por xmm0, xmm1
pshufd xmm1, xmm0, 0xe5
por xmm1, xmm0
movd ecx, xmm1
je 0x474872
mov ebx, dword [esp + 0x10]
mov edx, dword [esp]
sub eax, ebx
lea edx, [edx + ebx*4]
or ecx, dword [edx]
add edx, 4
dec eax
jne 0x47486a
test ecx, ecx
je 0x4748db
push 0x18f
push str.external_boringssl_src_crypto_fipsmodule_bn_bn.c
push 0x66
push 0
push 3
call sym.adb.exe_ERR_put_error
add esp, 0x14
mov dword [esp], 0
jmp 0x474486
push dword [esp + 4]
push dword [esp + 0xc]
call fcn.00444800
add esp, 8
test eax, eax
je 0x474486
mov eax, dword [esp + 8]
mov ecx, dword [esp + 4]
mov eax, dword [eax + 4]
sub ecx, eax
shl ecx, 2
test ecx, ecx
je 0x4748db
mov edx, dword [esp + 8]
shl eax, 2
add eax, dword [edx]
push ecx
push 0
push eax
call sub.msvcrt.dll_memset
add esp, 0xc
mov eax, dword [esp + 8]
mov ecx, dword [esp + 4]
mov dword [eax + 4], ecx
mov dword [esp], 1
jmp 0x474486