Function at 0x5aafe0
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x58
mov edx, dword [esp + 0x74]
mov eax, dword [esp + 0x70]
mov dword [eax], 0
cmp dword [edx + 0xc], 0
jne 0x5ab304
mov esi, dword [esp + 0x78]
mov ecx, dword [edx]
mov ebx, dword [edx + 4]
mov edi, dword [esi]
mov edx, dword [esi + 4]
cmp ebx, edx
mov dword [esp], edx
mov esi, edx
mov eax, ebx
mov dword [esp + 0x20], ebx
cmovb esi, ebx
test esi, esi
mov dword [esp + 8], edi
je 0x5ab062
xor ebp, ebp
xor edx, edx
mov eax, esi
nop dword [eax + eax]
mov ebx, dword [ecx + edx*4]
mov esi, dword [esp + 8]
mov edi, dword [esi + edx*4]
mov esi, ebx
sub esi, edi
xor edi, ebx
xor esi, ebx
or esi, edi
xor esi, ebx
mov ebx, esi
sar ebx, 0x1f
not esi
shr esi, 0x1f
or esi, ebx
test edi, edi
mov edi, dword [esp + 8]
cmovne ebp, esi
inc edx
cmp eax, edx
jne 0x5ab030
jmp 0x5ab066
xor ebp, ebp
mov eax, esi
mov dword [esp + 4], eax
mov eax, dword [esp + 0x20]
mov edx, eax
mov ebx, dword [esp]
sub edx, ebx
jae 0x5ab0ac
sub ebx, eax
xor esi, esi
mov edx, eax
cmp ebx, 8
jb 0x5ab1d5
mov dword [esp + 0x1c], ebx
lea esi, [ebx - 8]
mov edx, esi
shr edx, 3
inc edx
mov edi, edx
and edi, 3
cmp esi, 0x18
jae 0x5ab0eb
pxor xmm0, xmm0
xor ebx, ebx
pxor xmm1, xmm1
jmp 0x5ab167
jbe 0x5ab2f8
xor esi, esi
mov edi, edx
mov edx, ebx
cmp edi, 8
jb 0x5ab2e0
mov dword [esp + 0x1c], edi
lea esi, [edi - 8]
mov edx, esi
shr edx, 3
inc edx
mov ebx, edx
and ebx, 3
cmp esi, 0x18
jae 0x5ab1fb
pxor xmm0, xmm0
xor edi, edi
pxor xmm1, xmm1
jmp 0x5ab277
and edx, 0xfffffffc
mov eax, dword [esp + 8]
mov esi, dword [esp + 0x20]
lea esi, [eax + esi*4]
add esi, 0x70
mov eax, dword [esp + 0x20]
pxor xmm0, xmm0
xor ebx, ebx
pxor xmm1, xmm1
nop word [eax + eax]
movdqu xmm2, xmmword [esi + ebx*4 - 0x70]
por xmm2, xmm0
movdqu xmm0, xmmword [esi + ebx*4 - 0x60]
por xmm0, xmm1
movdqu xmm1, xmmword [esi + ebx*4 - 0x50]
movdqu xmm3, xmmword [esi + ebx*4 - 0x40]
movdqu xmm4, xmmword [esi + ebx*4 - 0x30]
por xmm4, xmm1
por xmm4, xmm2
movdqu xmm2, xmmword [esi + ebx*4 - 0x20]
por xmm2, xmm3
por xmm2, xmm0
movdqu xmm0, xmmword [esi + ebx*4 - 0x10]
por xmm0, xmm4
movdqu xmm1, xmmword [esi + ebx*4]
por xmm1, xmm2
add ebx, 0x20
add edx, 0xfffffffc
jne 0x5ab110
mov edx, dword [esp + 0x1c]
and edx, 0xfffffff8
test edi, edi
je 0x5ab1aa
add ebx, eax
mov eax, dword [esp + 8]
lea esi, [eax + ebx*4]
add esi, 0x10
mov eax, dword [esp + 0x20]
shl edi, 5
xor ebx, ebx
nop word [eax + eax]
movdqu xmm2, xmmword [esi + ebx - 0x10]
por xmm0, xmm2
movdqu xmm2, xmmword [esi + ebx]
por xmm1, xmm2
add ebx, 0x20
cmp edi, ebx
jne 0x5ab190
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd esi, xmm0
cmp dword [esp + 0x1c], edx
jne 0x5ab1cf
mov ebx, dword [esp]
jmp 0x5ab1e8
add edx, eax
mov edi, dword [esp + 8]
mov ebx, dword [esp]
nop dword [eax + eax]
or esi, dword [edi + edx*4]
inc edx
cmp ebx, edx
jne 0x5ab1e0
mov edx, esi
not edx
dec esi
and esi, edx
sar esi, 0x1f
not esi
or ebp, esi
jmp 0x5ab2f8
and edx, 0xfffffffc
mov esi, dword [esp]
lea esi, [ecx + esi*4]
add esi, 0x70
pxor xmm0, xmm0
xor edi, edi
pxor xmm1, xmm1
nop word cs:[eax + eax]
movdqu xmm2, xmmword [esi + edi*4 - 0x70]
por xmm2, xmm0
movdqu xmm0, xmmword [esi + edi*4 - 0x60]
por xmm0, xmm1
movdqu xmm1, xmmword [esi + edi*4 - 0x50]
movdqu xmm3, xmmword [esi + edi*4 - 0x40]
movdqu xmm4, xmmword [esi + edi*4 - 0x30]
por xmm4, xmm1
por xmm4, xmm2
movdqu xmm2, xmmword [esi + edi*4 - 0x20]
por xmm2, xmm3
por xmm2, xmm0
movdqu xmm0, xmmword [esi + edi*4 - 0x10]
por xmm0, xmm4
movdqu xmm1, xmmword [esi + edi*4]
por xmm1, xmm2
add edi, 0x20
add edx, 0xfffffffc
jne 0x5ab220
mov edx, dword [esp + 0x1c]
and edx, 0xfffffff8
test ebx, ebx
je 0x5ab2aa
add edi, dword [esp]
lea esi, [ecx + edi*4]
add esi, 0x10
shl ebx, 5
xor edi, edi
movdqu xmm2, xmmword [esi + edi - 0x10]
por xmm0, xmm2
movdqu xmm2, xmmword [esi + edi]
por xmm1, xmm2
add edi, 0x20
cmp ebx, edi
jne 0x5ab290
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd esi, xmm0
cmp dword [esp + 0x1c], edx
jne 0x5ab2cf
mov ebx, dword [esp]
jmp 0x5ab2e8
mov ebx, dword [esp]
add edx, ebx
nop word cs:[eax + eax]
or esi, dword [ecx + edx*4]
inc edx
cmp eax, edx
jne 0x5ab2e0
xor edi, edi
xor edx, edx
test esi, esi
cmove edi, ebp
setne dl
or edx, edi
mov ebp, edx
mov edi, dword [esp + 0x74]
test ebp, ebp
mov ebp, dword [esp + 0x70]
js 0x5ab328
push 0xae
push str.external_boringssl_src_crypto_fipsmodule_bn_gcd_extra.c
push 0x6b
push 0
push 3
call sym.adb.exe_ERR_put_error
add esp, 0x14
xor ecx, ecx
mov eax, ecx
add esp, 0x58
pop esi
pop edi
pop ebx
pop ebp
ret
test eax, eax
je 0x5ab457
xor edx, edx
mov esi, 0
cmp eax, 8
jb 0x5ab420
lea esi, [eax - 8]
mov edx, esi
shr edx, 3
inc edx
mov edi, edx
and edi, 3
cmp esi, 0x18
jae 0x5ab35f
pxor xmm0, xmm0
xor ebx, ebx
pxor xmm1, xmm1
jmp 0x5ab3c7
and edx, 0xfffffffc
pxor xmm0, xmm0
xor ebx, ebx
pxor xmm1, xmm1
nop dword [eax]
movdqu xmm2, xmmword [ecx + ebx*4]
por xmm2, xmm0
movdqu xmm0, xmmword [ecx + ebx*4 + 0x10]
por xmm0, xmm1
movdqu xmm1, xmmword [ecx + ebx*4 + 0x20]
movdqu xmm3, xmmword [ecx + ebx*4 + 0x30]
movdqu xmm4, xmmword [ecx + ebx*4 + 0x40]
por xmm4, xmm1
por xmm4, xmm2
movdqu xmm2, xmmword [ecx + ebx*4 + 0x50]
por xmm2, xmm3
por xmm2, xmm0
movdqu xmm0, xmmword [ecx + ebx*4 + 0x60]
por xmm0, xmm4
movdqu xmm1, xmmword [ecx + ebx*4 + 0x70]
por xmm1, xmm2
add ebx, 0x20
add edx, 0xfffffffc
jne 0x5ab370
mov edx, eax
and edx, 0xfffffff8
test edi, edi
je 0x5ab3fa
lea esi, [ecx + ebx*4]
add esi, 0x10
shl edi, 5
xor ebx, ebx
nop dword [eax + eax]
movdqu xmm2, xmmword [esi + ebx - 0x10]
por xmm0, xmm2
movdqu xmm2, xmmword [esi + ebx]
por xmm1, xmm2
add ebx, 0x20
cmp edi, ebx
jne 0x5ab3e0
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd esi, xmm0
cmp eax, edx
mov ebx, dword [esp]
mov edi, dword [esp + 0x74]
je 0x5ab428
nop
or esi, dword [ecx + edx*4]
inc edx
cmp eax, edx
jne 0x5ab420
test esi, esi
je 0x5ab457
test eax, eax
jle 0x5ab439
test byte [ecx], 1
jne 0x5ab4ba
test ebx, ebx
jle 0x5ab446
mov eax, dword [esp + 8]
test byte [eax], 1
jne 0x5ab4ba
mov dword [ebp], 1
push 0xc7
jmp 0x5ab608
mov ecx, dword [esp + 0x78]
cmp dword [ecx + 0xc], 0
jne 0x5ab5fc
test ebx, ebx
je 0x5ab5fc
mov eax, dword [esp + 8]
mov edx, dword [eax]
xor edx, 1
cmp ebx, 2
jl 0x5ab5f8
lea ecx, [ebx - 1]
mov edi, 1
cmp ecx, 8
jb 0x5ab5e7
movd xmm0, edx
lea esi, [ebx - 9]
mov edi, esi
shr edi, 3
inc edi
mov edx, edi
and edx, 3
cmp esi, 0x18
jae 0x5ab52e
pxor xmm1, xmm1
xor esi, esi
mov eax, dword [esp + 8]
jmp 0x5ab593
mov ebp, dword [esp + 0x7c]
cmp byte [ebp + 0x14], 0
jne 0x5ab63a
mov ecx, dword [ebp + 8]
mov esi, dword [ebp + 0x10]
cmp ecx, dword [ebp + 0xc]
jne 0x5ab520
lea eax, [ecx + ecx*2]
shr eax, 1
test ecx, ecx
mov edi, 0x20
cmovne edi, eax
cmp edi, ecx
jbe 0x5ab630
cmp edi, 0x3fffffff
ja 0x5ab630
lea eax, [edi*4]
push eax
push dword [ebp + 4]
call sym.adb.exe_OPENSSL_realloc
add esp, 8
test eax, eax
je 0x5ab630
mov dword [ebp + 4], eax
mov dword [ebp + 0xc], edi
mov ecx, dword [ebp + 8]
mov edi, dword [esp + 0x74]
jmp 0x5ab523
mov eax, dword [ebp + 4]
mov dword [eax + ecx*4], esi
inc dword [ebp + 8]
jmp 0x5ab63a
and edi, 0xfffffffc
pxor xmm1, xmm1
xor esi, esi
mov eax, dword [esp + 8]
movdqu xmm2, xmmword [eax + esi*4 + 4]
por xmm2, xmm0
movdqu xmm0, xmmword [eax + esi*4 + 0x14]
por xmm0, xmm1
movdqu xmm1, xmmword [eax + esi*4 + 0x24]
movdqu xmm3, xmmword [eax + esi*4 + 0x34]
movdqu xmm4, xmmword [eax + esi*4 + 0x44]
por xmm4, xmm1
por xmm4, xmm2
movdqu xmm2, xmmword [eax + esi*4 + 0x54]
por xmm2, xmm3
por xmm2, xmm0
movdqu xmm0, xmmword [eax + esi*4 + 0x64]
por xmm0, xmm4
movdqu xmm1, xmmword [eax + esi*4 + 0x74]
por xmm1, xmm2
add esi, 0x20
add edi, 0xfffffffc
jne 0x5ab53b
mov edi, ecx
and edi, 0xfffffff8
test edx, edx
je 0x5ab5c3
nop dword [eax]
lea ebx, [esi*4]
or ebx, 4
movdqu xmm2, xmmword [eax + ebx]
por xmm0, xmm2
movdqu xmm2, xmmword [eax + ebx + 0x10]
por xmm1, xmm2
add esi, 8
dec edx
jne 0x5ab5a0
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd edx, xmm0
cmp ecx, edi
je 0x5ab5f8
or edi, 1
mov ebx, dword [esp]
mov eax, dword [esp + 8]
nop dword [eax + eax]
or edx, dword [eax + edi*4]
inc edi
cmp ebx, edi
jne 0x5ab5f0
test edx, edx
je 0x5ab614
mov dword [ebp], 1
push 0xb7
push str.external_boringssl_src_crypto_fipsmodule_bn_gcd_extra.c
push 0x70
jmp 0x5ab310
mov eax, dword [esp + 0x6c]
mov dword [eax + 0xc], 0
mov dword [eax + 4], 0
mov ecx, 1
jmp 0x5ab31e
mov word [ebp + 0x14], 0x101
mov edi, dword [esp + 0x74]
push ebp
call sym.adb.exe_BN_CTX_get
add esp, 4
mov dword [esp + 8], eax
push ebp
call sym.adb.exe_BN_CTX_get
add esp, 4
mov dword [esp + 0x20], eax
push ebp
call sym.adb.exe_BN_CTX_get
add esp, 4
mov dword [esp + 0x1c], eax
push ebp
call sym.adb.exe_BN_CTX_get
add esp, 4
mov dword [esp + 0x38], eax
push ebp
call sym.adb.exe_BN_CTX_get
add esp, 4
mov esi, eax
push ebp
call sym.adb.exe_BN_CTX_get
add esp, 4
mov dword [esp + 0x3c], eax
push ebp
call sym.adb.exe_BN_CTX_get
add esp, 4
mov ebp, eax
push dword [esp + 0x7c]
call sym.adb.exe_BN_CTX_get
add esp, 4
mov dword [esp + 0x44], esi
movd xmm0, esi
mov ecx, dword [esp + 0x3c]
movd xmm1, ecx
punpckldq xmm0, xmm1
mov dword [esp + 0x18], ebp
movd xmm1, ebp
movd xmm2, eax
punpckldq xmm1, xmm2
punpcklqdq xmm0, xmm1
movd xmm1, dword [esp + 8]
mov ecx, dword [esp + 0x20]
movd xmm2, ecx
punpckldq xmm2, xmm1
movd xmm1, dword [esp + 0x1c]
movd xmm3, dword [esp + 0x38]
punpckldq xmm1, xmm3
punpcklqdq xmm2, xmm1
pxor xmm1, xmm1
pcmpeqd xmm2, xmm1
pcmpeqd xmm0, xmm1
packssdw xmm2, xmm0
pmovmskb edx, xmm2
xor ecx, ecx
test edx, edx
je 0x5ab718
mov ebp, dword [esp + 0x7c]
cmp byte [ebp + 0x14], 0
jne 0x5ab31e
jmp 0x5ab8a2
mov dword [esp + 0x4c], eax
mov esi, dword [esp + 8]
cmp esi, edi
mov ebp, dword [esp + 0x7c]
je 0x5ab763
push dword [edi + 4]
push esi
call fcn.0059f5c0
add esp, 8
test eax, eax
je 0x5ab896
mov eax, dword [edi + 4]
lea ecx, [eax*4]
test ecx, ecx
je 0x5ab75a
push ecx
push dword [edi]
push dword [esi]
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
add esp, 0xc
mov eax, dword [edi + 4]
mov dword [esi + 4], eax
mov eax, dword [edi + 0xc]
mov dword [esi + 0xc], eax
push dword [esp + 0x78]
mov edi, dword [esp + 0x24]
push edi
call sym.adb.exe_BN_copy
add esp, 8
test eax, eax
je 0x5ab896
push 1
mov esi, dword [esp + 0x20]
push esi
call fcn.0059f5c0
add esp, 8
test eax, eax
je 0x5ab896
mov dword [esi + 0xc], 0
mov eax, dword [esi]
mov dword [eax], 1
mov dword [esi + 4], 1
push 1
mov edi, dword [esp + 0x40]
push edi
call fcn.0059f5c0
add esp, 8
test eax, eax
je 0x5ab896
mov dword [edi + 0xc], 0
mov eax, dword [edi]
mov dword [eax], 1
mov dword [edi + 4], 1
push ebx
push dword [esp + 0xc]
call sym.adb.exe_bn_resize_words
add esp, 8
test eax, eax
je 0x5ab896
push ebx
push dword [esp + 0x24]
call sym.adb.exe_bn_resize_words
add esp, 8
test eax, eax
je 0x5ab896
push ebx
push esi
call sym.adb.exe_bn_resize_words
add esp, 8
test eax, eax
je 0x5ab896
push ebx
push dword [esp + 0x48]
call sym.adb.exe_bn_resize_words
add esp, 8
test eax, eax
je 0x5ab896
mov esi, dword [esp + 4]
push esi
push dword [esp + 0x3c]
call sym.adb.exe_bn_resize_words
add esp, 8
test eax, eax
je 0x5ab896
push esi
push dword [esp + 0x40]
call sym.adb.exe_bn_resize_words
add esp, 8
test eax, eax
je 0x5ab896
push ebx
push dword [esp + 0x1c]
call sym.adb.exe_bn_resize_words
add esp, 8
test eax, eax
je 0x5ab896
push ebx
push dword [esp + 0x50]
call sym.adb.exe_bn_resize_words
add esp, 8
test eax, eax
je 0x5ac349
mov ecx, dword [esp + 4]
mov eax, ecx
shl eax, 5
add ecx, ebx
shl ecx, 5
mov dword [esp + 0x50], ecx
cmp ecx, eax
jae 0x5ab8be
push 0xf6
push str.external_boringssl_src_crypto_fipsmodule_bn_gcd_extra.c
push 0x66
jmp 0x5ac33d
xor ecx, ecx
cmp byte [ebp + 0x14], 0
jne 0x5ab31e
mov eax, dword [ebp + 4]
mov esi, ecx
mov ecx, dword [ebp + 8]
lea edx, [ecx - 1]
mov dword [ebp + 8], edx
mov eax, dword [eax + ecx*4 - 4]
mov ecx, esi
mov dword [ebp + 0x10], eax
jmp 0x5ab31e
cmp dword [esp + 0x50], 0
je 0x5ac2fb
mov eax, dword [esp + 4]
lea ecx, [eax*4]
mov dword [esp + 0x2c], ecx
mov edx, dword [esp]
lea ecx, [edx*4]
mov dword [esp + 0x28], ecx
mov ecx, edx
and ecx, 0xfffffff8
mov dword [esp + 0x40], ecx
and eax, 0xfffffff8
mov dword [esp + 0x48], eax
xor esi, esi
jmp 0x5aba67
mov eax, dword [esp + 0x18]
mov eax, dword [eax]
mov ecx, dword [esp + 8]
mov ecx, dword [ecx]
mov esi, dword [ecx]
and esi, 1
dec esi
mov edx, dword [esp + 0x20]
mov edx, dword [edx]
mov edx, dword [edx]
and edx, 1
dec edx
mov dword [esp + 0x24], edx
mov edx, esi
mov dword [esp + 0xc], esi
mov edi, dword [esp]
push edi
push eax
call fcn.005ade40
add esp, 8
mov eax, dword [esp + 0x1c]
mov ecx, dword [eax]
mov eax, dword [ecx]
and eax, 1
neg eax
mov ebp, dword [esp + 0x38]
mov edx, dword [ebp]
mov edx, dword [edx]
and edx, 1
neg edx
or edx, eax
and edx, esi
mov esi, edx
push edi
mov ebx, dword [esp + 0x1c]
push dword [ebx]
mov edi, dword [esp + 0x80]
push dword [edi]
call fcn.005ae090
add esp, 0xc
mov dword [esp + 0x14], eax
mov ecx, dword [ebp]
mov edx, esi
mov esi, dword [esp + 4]
push esi
push dword [ebx]
mov eax, dword [esp + 0x7c]
push dword [eax]
call fcn.005ae090
add esp, 0xc
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x1c]
mov ecx, dword [eax]
mov edx, dword [esp + 0x14]
mov ebp, dword [esp]
push ebp
push dword [ebx]
mov edi, dword [esp + 0x14]
push edi
call fcn.005ae370
add esp, 0xc
mov eax, dword [esp + 0x38]
mov ecx, dword [eax]
mov edx, dword [esp + 0x10]
push esi
push dword [ebx]
push edi
call fcn.005ae370
add esp, 0xc
mov eax, dword [esp + 0x20]
mov ecx, dword [eax]
mov esi, dword [esp + 0x24]
mov edx, esi
push ebp
push dword [ebx]
call fcn.005ade40
add esp, 8
mov eax, dword [esp + 0x44]
mov ecx, dword [eax]
mov eax, dword [ecx]
and eax, 1
neg eax
mov edi, dword [esp + 0x3c]
mov edx, dword [edi]
mov edx, dword [edx]
and edx, 1
neg edx
or edx, eax
and edx, esi
mov esi, edx
push ebp
push dword [ebx]
mov eax, dword [esp + 0x80]
push dword [eax]
call fcn.005ae090
add esp, 0xc
mov dword [esp + 0xc], eax
mov ecx, dword [edi]
mov edx, esi
mov esi, dword [esp + 4]
push esi
push dword [ebx]
mov eax, dword [esp + 0x7c]
push dword [eax]
call fcn.005ae090
add esp, 0xc
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x44]
mov ecx, dword [eax]
mov edx, dword [esp + 0xc]
push ebp
push dword [ebx]
mov ebp, dword [esp + 0x2c]
push ebp
call fcn.005ae370
add esp, 0xc
mov ecx, dword [edi]
mov edx, dword [esp + 0x14]
push esi
push dword [ebx]
push ebp
call fcn.005ae370
add esp, 0xc
mov esi, dword [esp + 0x54]
inc esi
cmp esi, dword [esp + 0x50]
je 0x5ac2fb
mov eax, dword [esp + 8]
mov eax, dword [eax]
mov ecx, dword [eax]
and ecx, 1
neg ecx
mov edx, dword [esp + 0x20]
mov edx, dword [edx]
mov edi, dword [edx]
and edi, 1
neg edi
and edi, ecx
mov ebp, dword [esp + 0x18]
mov ebx, dword [esp]
push ebx
push eax
push edx
push dword [ebp]
call fcn.005a0630
add esp, 0x10
mov ecx, eax
neg ecx
mov dword [esp + 0x10], ecx
dec eax
mov dword [esp + 0xc], edi
and eax, edi
mov ecx, dword [esp + 0x20]
mov ecx, dword [ecx]
mov ebp, dword [ebp]
mov dword [esp + 0x14], eax
not eax
mov dword [esp + 0x24], eax
test ebx, ebx
mov dword [esp + 0x54], esi
je 0x5abb5a
xor edx, edx
cmp dword [esp], 8
jb 0x5abb4a
mov esi, dword [esp + 0x28]
add esi, ebp
cmp ecx, esi
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0x24]
jae 0x5abaea
mov esi, dword [esp + 0x28]
add esi, ecx
cmp ebp, esi
jb 0x5abb4a
movd xmm0, edi
pshufd xmm0, xmm0, 0
movd xmm1, eax
pshufd xmm1, xmm1, 0
xor edx, edx
mov esi, dword [esp + 0x40]
movdqu xmm2, xmmword [ebp + edx*4]
movdqu xmm3, xmmword [ebp + edx*4 + 0x10]
movdqu xmm4, xmmword [ecx + edx*4]
movdqu xmm5, xmmword [ecx + edx*4 + 0x10]
pand xmm2, xmm0
pand xmm3, xmm0
pand xmm4, xmm1
por xmm4, xmm2
pand xmm5, xmm1
por xmm5, xmm3
movdqu xmmword [ecx + edx*4], xmm4
movdqu xmmword [ecx + edx*4 + 0x10], xmm5
add edx, 8
cmp esi, edx
jne 0x5abb02
mov edx, esi
cmp dword [esp], esi
je 0x5abbaf
mov esi, edx
or esi, 1
test byte [esp], 1
jne 0x5abb60
mov eax, dword [esp]
jmp 0x5abb79
mov edi, dword [esp + 0x18]
jmp 0x5abbbb
mov edi, dword [ebp + edx*4]
and edi, dword [esp + 0x14]
mov ebx, dword [ecx + edx*4]
and ebx, dword [esp + 0x24]
or ebx, edi
mov dword [ecx + edx*4], ebx
mov eax, dword [esp]
mov edx, esi
cmp eax, esi
mov ebx, dword [esp + 0x14]
mov eax, dword [esp + 0x24]
je 0x5abbaf
mov esi, dword [ebp + edx*4]
and esi, ebx
mov edi, dword [ecx + edx*4]
and edi, eax
or edi, esi
mov dword [ecx + edx*4], edi
mov esi, dword [ebp + edx*4 + 4]
and esi, ebx
mov edi, dword [ecx + edx*4 + 4]
and edi, eax
or edi, esi
mov dword [ecx + edx*4 + 4], edi
add edx, 2
cmp dword [esp], edx
jne 0x5abb85
mov edi, dword [esp + 0x18]
mov ebp, dword [edi]
mov ecx, dword [esp + 0x20]
mov ecx, dword [ecx]
mov ebx, dword [esp]
push ebx
push ecx
mov esi, dword [esp + 0x10]
push dword [esi]
push ebp
call fcn.005a0630
add esp, 0x10
mov ecx, dword [esp + 0xc]
and ecx, dword [esp + 0x10]
mov dword [esp + 0xc], ecx
mov eax, dword [edi]
not ecx
mov dword [esp + 0x10], ecx
test ebx, ebx
je 0x5abcd5
mov ecx, dword [esi]
xor edx, edx
cmp ebx, 8
jb 0x5abc6f
mov esi, dword [esp + 0x28]
add esi, eax
cmp ecx, esi
mov edi, dword [esp + 0x10]
mov ebx, dword [esp + 0xc]
jae 0x5abc10
mov esi, dword [esp + 0x28]
add esi, ecx
cmp eax, esi
jb 0x5abc6f
movd xmm0, ebx
pshufd xmm0, xmm0, 0
movd xmm1, edi
pshufd xmm1, xmm1, 0
xor edx, edx
mov esi, dword [esp + 0x40]
movdqu xmm2, xmmword [eax + edx*4]
movdqu xmm3, xmmword [eax + edx*4 + 0x10]
movdqu xmm4, xmmword [ecx + edx*4]
movdqu xmm5, xmmword [ecx + edx*4 + 0x10]
pand xmm2, xmm0
pand xmm3, xmm0
pand xmm4, xmm1
por xmm4, xmm2
pand xmm5, xmm1
por xmm5, xmm3
movdqu xmmword [ecx + edx*4], xmm4
movdqu xmmword [ecx + edx*4 + 0x10], xmm5
add edx, 8
cmp esi, edx
jne 0x5abc28
mov edx, esi
cmp dword [esp], esi
je 0x5abccc
mov esi, edx
or esi, 1
test byte [esp], 1
jne 0x5abc7f
mov edi, dword [esp]
jmp 0x5abc97
mov edi, dword [eax + edx*4]
and edi, dword [esp + 0xc]
mov ebx, dword [ecx + edx*4]
and ebx, dword [esp + 0x10]
or ebx, edi
mov dword [ecx + edx*4], ebx
mov edi, dword [esp]
mov edx, esi
cmp edi, esi
mov ebp, dword [esp + 0x10]
mov ebx, dword [esp + 0xc]
je 0x5abccc
mov esi, dword [eax + edx*4]
and esi, ebx
mov edi, dword [ecx + edx*4]
and edi, ebp
or edi, esi
mov dword [ecx + edx*4], edi
mov esi, dword [eax + edx*4 + 4]
and esi, ebx
mov edi, dword [ecx + edx*4 + 4]
and edi, ebp
or edi, esi
mov dword [ecx + edx*4 + 4], edi
add edx, 2
cmp dword [esp], edx
jne 0x5abca3
mov edi, dword [esp + 0x18]
mov eax, dword [edi]
mov ebx, dword [esp]
push ebx
mov ebp, ebx
mov ecx, dword [esp + 0x48]
push dword [ecx]
mov ecx, dword [esp + 0x24]
push dword [ecx]
push eax
call fcn.0059f670
add esp, 0x10
mov ebx, eax
push ebp
mov eax, dword [esp + 0x7c]
push dword [eax]
push dword [edi]
mov esi, dword [esp + 0x58]
push dword [esi]
call fcn.005a0630
add esp, 0x10
sub ebx, eax
mov eax, dword [edi]
mov dword [esp + 0x34], ebx
not ebx
mov dword [esp + 0x30], ebx
test ebp, ebp
je 0x5abdb0
mov ecx, dword [esi]
xor edx, edx
cmp ebp, 8
jb 0x5abda0
mov esi, dword [esp + 0x28]
add esi, ecx
cmp eax, esi
mov edi, dword [esp + 0x34]
mov ebx, dword [esp + 0x30]
jae 0x5abd41
mov esi, dword [esp + 0x28]
add esi, eax
cmp ecx, esi
jb 0x5abda0
movd xmm0, edi
pshufd xmm0, xmm0, 0
movd xmm1, ebx
pshufd xmm1, xmm1, 0
xor edx, edx
mov esi, dword [esp + 0x40]
movdqu xmm2, xmmword [eax + edx*4]
movdqu xmm3, xmmword [eax + edx*4 + 0x10]
movdqu xmm4, xmmword [ecx + edx*4]
movdqu xmm5, xmmword [ecx + edx*4 + 0x10]
pand xmm2, xmm0
pand xmm3, xmm0
pand xmm4, xmm1
por xmm4, xmm2
pand xmm5, xmm1
por xmm5, xmm3
movdqu xmmword [eax + edx*4], xmm4
movdqu xmmword [eax + edx*4 + 0x10], xmm5
add edx, 8
cmp esi, edx
jne 0x5abd59
mov edx, esi
cmp dword [esp], esi
je 0x5abe06
mov esi, edx
or esi, 1
test byte [esp], 1
jne 0x5abdb9
mov edi, dword [esp]
jmp 0x5abdd1
mov ebx, dword [esp + 0x18]
jmp 0x5abfe4
mov edi, dword [eax + edx*4]
and edi, dword [esp + 0x34]
mov ebx, dword [ecx + edx*4]
and ebx, dword [esp + 0x30]
or ebx, edi
mov dword [eax + edx*4], ebx
mov edi, dword [esp]
mov edx, esi
cmp edi, esi
mov ebp, dword [esp + 0x34]
mov ebx, dword [esp + 0x30]
je 0x5abe06
mov esi, dword [eax + edx*4]
and esi, ebp
mov edi, dword [ecx + edx*4]
and edi, ebx
or edi, esi
mov dword [eax + edx*4], edi
mov esi, dword [eax + edx*4 + 4]
and esi, ebp
mov edi, dword [ecx + edx*4 + 4]
and edi, ebx
or edi, esi
mov dword [eax + edx*4 + 4], edi
add edx, 2
cmp dword [esp], edx
jne 0x5abddd
xor edx, edx
mov eax, dword [esp + 0x1c]
mov eax, dword [eax]
mov ecx, dword [esp + 0x18]
mov ecx, dword [ecx]
mov esi, dword [esp]
mov edi, esi
cmp esi, 8
jb 0x5abe9a
mov esi, dword [esp + 0x28]
add esi, ecx
cmp eax, esi
mov ebp, dword [esp + 0x10]
mov ebx, dword [esp + 0xc]
jae 0x5abe3a
mov esi, dword [esp + 0x28]
add esi, eax
cmp ecx, esi
jb 0x5abe9a
movd xmm0, ebx
pshufd xmm0, xmm0, 0
movd xmm1, ebp
pshufd xmm1, xmm1, 0
xor edx, edx
mov esi, dword [esp + 0x40]
movdqu xmm2, xmmword [ecx + edx*4]
movdqu xmm3, xmmword [ecx + edx*4 + 0x10]
movdqu xmm4, xmmword [eax + edx*4]
movdqu xmm5, xmmword [eax + edx*4 + 0x10]
pand xmm2, xmm0
pand xmm3, xmm0
pand xmm4, xmm1
por xmm4, xmm2
pand xmm5, xmm1
por xmm5, xmm3
movdqu xmmword [eax + edx*4], xmm4
movdqu xmmword [eax + edx*4 + 0x10], xmm5
add edx, 8
cmp esi, edx
jne 0x5abe52
mov edx, esi
mov ebx, edi
cmp edi, esi
je 0x5abef2
mov esi, edx
or esi, 1
test byte [esp], 1
je 0x5abebd
mov edi, dword [ecx + edx*4]
and edi, dword [esp + 0xc]
mov ebx, dword [eax + edx*4]
and ebx, dword [esp + 0x10]
or ebx, edi
mov dword [eax + edx*4], ebx
mov edi, dword [esp]
mov edx, esi
cmp edi, esi
mov ebp, dword [esp + 0x10]
mov ebx, dword [esp + 0xc]
je 0x5abef2
mov esi, dword [ecx + edx*4]
and esi, ebx
mov edi, dword [eax + edx*4]
and edi, ebp
or edi, esi
mov dword [eax + edx*4], edi
mov esi, dword [ecx + edx*4 + 4]
and esi, ebx
mov edi, dword [eax + edx*4 + 4]
and edi, ebp
or edi, esi
mov dword [eax + edx*4 + 4], edi
add edx, 2
cmp dword [esp], edx
jne 0x5abec9
xor edx, edx
mov eax, dword [esp + 0x44]
mov eax, dword [eax]
mov ecx, dword [esp + 0x18]
mov ecx, dword [ecx]
mov esi, dword [esp]
mov edi, esi
cmp esi, 8
jb 0x5abf86
mov esi, dword [esp + 0x28]
add esi, ecx
cmp eax, esi
mov ebp, dword [esp + 0x24]
mov ebx, dword [esp + 0x14]
jae 0x5abf26
mov esi, dword [esp + 0x28]
add esi, eax
cmp ecx, esi
jb 0x5abf86
movd xmm0, ebx
pshufd xmm0, xmm0, 0
movd xmm1, ebp
pshufd xmm1, xmm1, 0
xor edx, edx
mov esi, dword [esp + 0x40]
movdqu xmm2, xmmword [ecx + edx*4]
movdqu xmm3, xmmword [ecx + edx*4 + 0x10]
movdqu xmm4, xmmword [eax + edx*4]
movdqu xmm5, xmmword [eax + edx*4 + 0x10]
pand xmm2, xmm0
pand xmm3, xmm0
pand xmm4, xmm1
por xmm4, xmm2
pand xmm5, xmm1
por xmm5, xmm3
movdqu xmmword [eax + edx*4], xmm4
movdqu xmmword [eax + edx*4 + 0x10], xmm5
add edx, 8
cmp esi, edx
jne 0x5abf3e
mov edx, esi
mov ebx, edi
cmp edi, esi
je 0x5abfde
mov esi, edx
or esi, 1
test byte [esp], 1
je 0x5abfa9
mov edi, dword [ecx + edx*4]
and edi, dword [esp + 0x14]
mov ebx, dword [eax + edx*4]
and ebx, dword [esp + 0x24]
or ebx, edi
mov dword [eax + edx*4], ebx
mov edi, dword [esp]
mov edx, esi
cmp edi, esi
mov ebp, dword [esp + 0x24]
mov ebx, dword [esp + 0x14]
je 0x5abfde
mov esi, dword [ecx + edx*4]
and esi, ebx
mov edi, dword [eax + edx*4]
and edi, ebp
or edi, esi
mov dword [eax + edx*4], edi
mov esi, dword [ecx + edx*4 + 4]
and esi, ebx
mov edi, dword [eax + edx*4 + 4]
and edi, ebp
or edi, esi
mov dword [eax + edx*4 + 4], edi
add edx, 2
cmp dword [esp], edx
jne 0x5abfb5
mov ebx, dword [esp + 0x18]
mov eax, dword [ebx]
mov esi, dword [esp + 0x74]
mov edi, dword [esp + 4]
push edi
mov ecx, dword [esp + 0x40]
push dword [ecx]
mov ecx, dword [esp + 0x40]
push dword [ecx]
push eax
call fcn.0059f670
add esp, 0x10
push edi
push dword [esi]
push dword [ebx]
mov esi, dword [esp + 0x58]
push dword [esi]
call fcn.005a0630
add esp, 0x10
mov eax, dword [ebx]
test edi, edi
je 0x5ab903
mov ecx, dword [esi]
xor edx, edx
cmp edi, 8
jb 0x5ac0a4
mov esi, dword [esp + 0x2c]
add esi, ecx
cmp eax, esi
mov ebx, dword [esp + 0x34]
mov edi, dword [esp + 0x30]
jae 0x5ac044
mov esi, dword [esp + 0x2c]
add esi, eax
cmp ecx, esi
jb 0x5ac0a4
movd xmm0, ebx
pshufd xmm0, xmm0, 0
movd xmm1, edi
pshufd xmm1, xmm1, 0
xor edx, edx
mov esi, dword [esp + 0x48]
movdqu xmm2, xmmword [eax + edx*4]
movdqu xmm3, xmmword [eax + edx*4 + 0x10]
movdqu xmm4, xmmword [ecx + edx*4]
movdqu xmm5, xmmword [ecx + edx*4 + 0x10]
pand xmm2, xmm0
pand xmm3, xmm0
pand xmm4, xmm1
por xmm4, xmm2
pand xmm5, xmm1
por xmm5, xmm3
movdqu xmmword [eax + edx*4], xmm4
movdqu xmmword [eax + edx*4 + 0x10], xmm5
add edx, 8
cmp esi, edx
jne 0x5ac05c
mov edx, esi
cmp dword [esp + 4], esi
je 0x5ac0fd
mov esi, edx
or esi, 1
test byte [esp + 4], 1
je 0x5ac0c5
mov edi, dword [eax + edx*4]
and edi, dword [esp + 0x34]
mov ebx, dword [ecx + edx*4]
and ebx, dword [esp + 0x30]
or ebx, edi
mov dword [eax + edx*4], ebx
mov edx, esi
cmp dword [esp + 4], esi
mov ebp, dword [esp + 0x30]
mov ebx, dword [esp + 0x34]
je 0x5ac0fd
mov esi, dword [eax + edx*4]
and esi, ebx
mov edi, dword [ecx + edx*4]
and edi, ebp
or edi, esi
mov dword [eax + edx*4], edi
mov esi, dword [eax + edx*4 + 4]
and esi, ebx
mov edi, dword [ecx + edx*4 + 4]
and edi, ebp
or edi, esi
mov dword [eax + edx*4 + 4], edi
add edx, 2
cmp dword [esp + 4], edx
jne 0x5ac0d3
xor edx, edx
mov eax, dword [esp + 0x38]
mov eax, dword [eax]
mov ecx, dword [esp + 0x18]
mov ecx, dword [ecx]
cmp dword [esp + 4], 8
jb 0x5ac18e
mov esi, dword [esp + 0x2c]
add esi, ecx
cmp eax, esi
mov edi, dword [esp + 0x10]
mov ebx, dword [esp + 0xc]
jae 0x5ac12e
mov esi, dword [esp + 0x2c]
add esi, eax
cmp ecx, esi
jb 0x5ac18e
movd xmm0, ebx
pshufd xmm0, xmm0, 0
movd xmm1, edi
pshufd xmm1, xmm1, 0
xor edx, edx
mov esi, dword [esp + 0x48]
movdqu xmm2, xmmword [ecx + edx*4]
movdqu xmm3, xmmword [ecx + edx*4 + 0x10]
movdqu xmm4, xmmword [eax + edx*4]
movdqu xmm5, xmmword [eax + edx*4 + 0x10]
pand xmm2, xmm0
pand xmm3, xmm0
pand xmm4, xmm1
por xmm4, xmm2
pand xmm5, xmm1
por xmm5, xmm3
movdqu xmmword [eax + edx*4], xmm4
movdqu xmmword [eax + edx*4 + 0x10], xmm5
add edx, 8
cmp esi, edx
jne 0x5ac146
mov edx, esi
cmp dword [esp + 4], esi
je 0x5ac1e7
mov esi, edx
or esi, 1
test byte [esp + 4], 1
je 0x5ac1af
mov edi, dword [ecx + edx*4]
and edi, dword [esp + 0xc]
mov ebx, dword [eax + edx*4]
and ebx, dword [esp + 0x10]
or ebx, edi
mov dword [eax + edx*4], ebx
mov edx, esi
cmp dword [esp + 4], esi
mov ebp, dword [esp + 0x10]
mov ebx, dword [esp + 0xc]
je 0x5ac1e7
mov esi, dword [ecx + edx*4]
and esi, ebx
mov edi, dword [eax + edx*4]
and edi, ebp
or edi, esi
mov dword [eax + edx*4], edi
mov esi, dword [ecx + edx*4 + 4]
and esi, ebx
mov edi, dword [eax + edx*4 + 4]
and edi, ebp
or edi, esi
mov dword [eax + edx*4 + 4], edi
add edx, 2
cmp dword [esp + 4], edx
jne 0x5ac1bd
xor edx, edx
mov eax, dword [esp + 0x3c]
mov ebp, dword [eax]
mov ecx, dword [esp + 0x18]
mov ecx, dword [ecx]
cmp dword [esp + 4], 8
jae 0x5ac205
mov ebx, dword [esp + 4]
jmp 0x5ac28d
mov esi, dword [esp + 0x2c]
add esi, ecx
cmp ebp, esi
mov ebx, dword [esp + 4]
mov edi, dword [esp + 0x14]
mov eax, dword [esp + 0x24]
jae 0x5ac225
mov esi, dword [esp + 0x2c]
add esi, ebp
cmp ecx, esi
jb 0x5ac28d
movd xmm0, edi
pshufd xmm0, xmm0, 0
movd xmm1, eax
pshufd xmm1, xmm1, 0
xor edx, edx
mov esi, dword [esp + 0x48]
movdqu xmm2, xmmword [ecx + edx*4]
movdqu xmm3, xmmword [ecx + edx*4 + 0x10]
movdqu xmm4, xmmword [ebp + edx*4]
movdqu xmm5, xmmword [ebp + edx*4 + 0x10]
pand xmm2, xmm0
pand xmm3, xmm0
pand xmm4, xmm1
por xmm4, xmm2
pand xmm5, xmm1
por xmm5, xmm3
movdqu xmmword [ebp + edx*4], xmm4
movdqu xmmword [ebp + edx*4 + 0x10], xmm5
add edx, 8
cmp esi, edx
jne 0x5ac23d
mov edx, esi
mov ebx, dword [esp + 4]
cmp ebx, esi
je 0x5ab8fd
mov eax, ecx
mov esi, edx
or esi, 1
test bl, 1
je 0x5ac2b0
mov edi, dword [eax + edx*4]
and edi, dword [esp + 0x14]
mov ebx, dword [ebp + edx*4]
and ebx, dword [esp + 0x24]
or ebx, edi
mov dword [ebp + edx*4], ebx
mov edx, esi
mov ecx, dword [esp + 4]
cmp ecx, esi
mov ebx, dword [esp + 0x14]
je 0x5ab8fd
mov esi, dword [eax + edx*4]
and esi, ebx
mov edi, dword [ebp + edx*4]
mov ecx, eax
mov eax, dword [esp + 0x24]
and edi, eax
or edi, esi
mov dword [ebp + edx*4], edi
mov esi, dword [ecx + edx*4 + 4]
and esi, ebx
mov edi, dword [ebp + edx*4 + 4]
and edi, eax
mov eax, ecx
or edi, esi
mov dword [ebp + edx*4 + 4], edi
mov ecx, dword [esp + 4]
add edx, 2
cmp ecx, edx
jne 0x5ac2c0
jmp 0x5ab8fd
push dword [esp + 8]
call sym.adb.exe_BN_is_one
add esp, 4
test eax, eax
je 0x5ac327
push dword [esp + 0x1c]
push dword [esp + 0x70]
call sym.adb.exe_BN_copy
add esp, 8
xor ecx, ecx
test eax, eax
setne cl
jmp 0x5ab705
mov eax, dword [esp + 0x70]
mov dword [eax], 1
push 0x13d
push str.external_boringssl_src_crypto_fipsmodule_bn_gcd_extra.c
push 0x70
push 0
push 3
call sym.adb.exe_ERR_put_error
add esp, 0x14
mov ebp, dword [esp + 0x7c]
xor ecx, ecx
cmp byte [ebp + 0x14], 0
jne 0x5ab31e
jmp 0x5ab8a2