Function at 0x5e5580
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x2c
mov ebp, edx
mov dword [esp], ecx
mov esi, dword [esp + 0x48]
cmp byte [esi + 0x14], 0
jne 0x5e55f5
mov ecx, dword [esi + 8]
mov ebx, esi
mov esi, dword [esi + 0x10]
cmp ecx, dword [ebx + 0xc]
jne 0x5e55e0
lea eax, [ecx + ecx*2]
shr eax, 1
test ecx, ecx
mov edi, 0x20
cmovne edi, eax
cmp edi, ecx
jbe 0x5e55ed
cmp edi, 0x3fffffff
ja 0x5e55ed
lea eax, [edi*4]
push eax
push dword [ebx + 4]
call sym.adb.exe_OPENSSL_realloc
add esp, 8
test eax, eax
je 0x5e55ed
mov dword [ebx + 4], eax
mov dword [ebx + 0xc], edi
mov ecx, dword [ebx + 8]
jmp 0x5e55e3
mov eax, dword [ebx + 4]
mov dword [eax + ecx*4], esi
inc dword [ebx + 8]
mov esi, ebx
jmp 0x5e55f5
mov esi, ebx
mov word [ebx + 0x14], 0x101
push esi
call sym.adb.exe_BN_CTX_get
add esp, 4
xor ebx, ebx
test eax, eax
je 0x5e57a4
mov ecx, eax
mov eax, dword [esp + 0x40]
test eax, eax
je 0x5e5654
cmp ebp, eax
je 0x5e565b
mov edi, ecx
mov edx, ebp
push esi
push eax
call fcn.005b1270
add esp, 8
test eax, eax
je 0x5e57a4
mov ebx, edi
mov eax, dword [edi + 4]
mov ecx, eax
sar ecx, 0x1f
and ecx, eax
mov edx, eax
mov ebp, dword [esp]
nop dword [eax]
test edx, edx
jle 0x5e56a8
mov edi, dword [ebx]
lea esi, [edx - 1]
cmp dword [edi + edx*4 - 4], 0
mov edx, esi
je 0x5e5640
jmp 0x5e56a2
mov ebx, ebp
mov ebp, dword [esp]
jmp 0x5e56ba
push esi
push eax
push ecx
mov edi, ecx
call fcn.005b1a00
add esp, 0xc
test eax, eax
je 0x5e57a4
mov ebx, edi
mov eax, dword [edi + 4]
mov ecx, eax
sar ecx, 0x1f
and ecx, eax
mov edx, eax
mov ebp, dword [esp]
nop word cs:[eax + eax]
test edx, edx
jle 0x5e56a8
mov edi, dword [ebx]
lea esi, [edx - 1]
cmp dword [edi + edx*4 - 4], 0
mov edx, esi
je 0x5e5690
inc esi
mov dword [ebx + 4], esi
jmp 0x5e56b6
mov dword [ebx + 4], ecx
test eax, eax
js 0x5e56b6
mov dword [ebx + 0xc], 0
mov esi, dword [esp + 0x48]
mov dword [esp + 0x18], ebx
cmp byte [esi + 0x14], 0
jne 0x5e5723
mov ecx, dword [esi + 8]
mov ebx, esi
mov esi, dword [esi + 0x10]
cmp ecx, dword [ebx + 0xc]
jne 0x5e570e
lea eax, [ecx + ecx*2]
shr eax, 1
test ecx, ecx
mov edi, 0x20
cmovne edi, eax
cmp edi, ecx
jbe 0x5e571b
cmp edi, 0x3fffffff
ja 0x5e571b
lea eax, [edi*4]
push eax
push dword [ebx + 4]
call sym.adb.exe_OPENSSL_realloc
add esp, 8
test eax, eax
je 0x5e571b
mov dword [ebx + 4], eax
mov dword [ebx + 0xc], edi
mov ecx, dword [ebx + 8]
jmp 0x5e5711
mov eax, dword [ebx + 4]
mov dword [eax + ecx*4], esi
inc dword [ebx + 8]
mov esi, ebx
jmp 0x5e5723
mov esi, ebx
mov word [ebx + 0x14], 0x101
push esi
call sym.adb.exe_BN_CTX_get
add esp, 4
mov ebx, eax
push esi
call sym.adb.exe_BN_CTX_get
add esp, 4
mov edi, eax
push esi
call sym.adb.exe_BN_CTX_get
add esp, 4
mov ecx, eax
test ebp, ebp
jne 0x5e575f
push esi
mov ebp, ebx
mov ebx, edi
mov edi, ecx
call sym.adb.exe_BN_CTX_get
mov ecx, edi
mov edi, ebx
mov ebx, ebp
add esp, 4
mov ebp, eax
movd xmm0, ebp
movd xmm1, ecx
punpckldq xmm1, xmm0
movd xmm0, ebx
movd xmm2, edi
punpckldq xmm2, xmm0
punpcklqdq xmm2, xmm1
pxor xmm0, xmm0
pcmpeqd xmm0, xmm2
movmskps eax, xmm0
mov edx, ebx
xor ebx, ebx
test eax, eax
je 0x5e57c7
cmp byte [esi + 0x14], 0
jne 0x5e57bd
mov eax, dword [esi + 8]
dec eax
mov dword [esi + 8], eax
mov ecx, dword [esi + 4]
mov eax, dword [ecx + eax*4]
mov dword [esi + 0x10], eax
cmp byte [esi + 0x14], 0
jne 0x5e57bd
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 eax, ebx
add esp, 0x2c
pop esi
pop edi
pop ebx
pop ebp
ret
mov dword [esp + 0x24], edx
mov dword [esp + 0x10], edi
mov dword [esp + 0x1c], ecx
mov dword [esp], ebp
mov ecx, dword [esp + 0x44]
mov eax, dword [esp + 0x18]
mov edi, dword [eax]
mov eax, dword [eax + 4]
mov ebx, dword [ecx]
mov edx, dword [ecx + 4]
cmp eax, edx
mov dword [esp + 0xc], edx
mov dword [esp + 0x20], eax
cmovb edx, eax
test edx, edx
mov dword [esp + 4], ebx
je 0x5e5842
xor ecx, ecx
xor esi, esi
nop word cs:[eax + eax]
mov ebp, dword [edi + esi*4]
mov eax, dword [esp + 4]
mov eax, dword [eax + esi*4]
mov ebx, edi
mov edi, ebp
sub edi, eax
xor eax, ebp
xor edi, ebp
or edi, eax
xor edi, ebp
mov ebp, edi
sar ebp, 0x1f
not edi
shr edi, 0x1f
or edi, ebp
test eax, eax
cmovne ecx, edi
mov edi, ebx
inc esi
cmp edx, esi
jne 0x5e5810
jmp 0x5e5844
xor ecx, ecx
mov dword [esp + 8], ecx
mov ebp, dword [esp + 4]
mov ebx, dword [esp + 0x20]
mov edx, ebx
mov eax, dword [esp + 0xc]
sub edx, eax
jae 0x5e5895
mov edx, eax
sub edx, ebx
xor esi, esi
mov ecx, ebx
cmp edx, 8
jb 0x5e59e0
mov dword [esp + 0x14], edi
mov dword [esp + 0x28], edx
lea eax, [edx - 8]
mov ecx, eax
shr ecx, 3
inc ecx
mov edx, ecx
and edx, 3
cmp eax, 0x18
jae 0x5e58be
pxor xmm0, xmm0
xor edi, edi
pxor xmm1, xmm1
jmp 0x5e5937
jbe 0x5e58aa
xor ecx, ecx
cmp edx, 8
jae 0x5e59a0
mov ebp, dword [esp]
jmp 0x5e5c1e
mov ebp, dword [esp]
mov eax, dword [esp + 8]
test eax, eax
jns 0x5e5a06
jmp 0x5e5c4e
and ecx, 0xfffffffc
lea esi, [ebx*4 + 0x70]
add esi, ebp
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 ecx, 0xfffffffc
jne 0x5e58e0
mov ecx, dword [esp + 0x28]
and ecx, 0xfffffff8
test edx, edx
mov eax, dword [esp + 0xc]
je 0x5e597a
add edi, ebx
lea esi, [edi*4 + 0x10]
add esi, ebp
shl edx, 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 edx, edi
jne 0x5e5960
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd esi, xmm0
cmp dword [esp + 0x28], ecx
jne 0x5e59ce
mov edi, dword [esp + 0x14]
jmp 0x5e59e9
mov dword [esp + 0x14], edi
lea eax, [edx - 8]
mov edi, eax
shr edi, 3
inc edi
mov ebp, edi
and ebp, 3
cmp eax, 0x18
jae 0x5e5b28
pxor xmm0, xmm0
xor ecx, ecx
pxor xmm1, xmm1
mov eax, dword [esp + 0xc]
jmp 0x5e5ba7
add ecx, ebx
mov edi, dword [esp + 0x14]
nop word cs:[eax + eax]
or esi, dword [ebp + ecx*4]
inc ecx
cmp eax, ecx
jne 0x5e59e0
mov eax, esi
not eax
dec esi
and esi, eax
sar esi, 0x1f
not esi
mov eax, dword [esp + 8]
or eax, esi
mov ebp, dword [esp]
test eax, eax
js 0x5e5c4e
mov edx, ebx
sar edx, 0x1f
and edx, ebx
mov ecx, ebx
nop
test ecx, ecx
jle 0x5e5a1f
mov esi, dword [edi + ecx*4 - 4]
dec ecx
test esi, esi
je 0x5e5a10
jmp 0x5e5a2c
xor eax, eax
test ebx, ebx
jns 0x5e5a9c
mov esi, dword [edi + edx*4 - 4]
dec edx
mov ecx, edx
shl ecx, 5
xor eax, eax
test esi, esi
setne al
mov edi, esi
shr edi, 0x10
xor ebx, ebx
cmp esi, 0x10000
setae bl
cmovb edi, esi
shl ebx, 4
mov esi, edi
shr esi, 8
xor edx, edx
cmp edi, 0x100
setae dl
mov dword [esp + 4], edx
cmovb esi, edi
mov edi, esi
shr edi, 4
xor edx, edx
cmp esi, 0x10
cmovb edi, esi
setae dl
mov ebp, edx
mov esi, edi
shr esi, 2
xor edx, edx
cmp edi, 4
cmovb esi, edi
setae dl
or eax, ecx
or eax, ebx
mov ecx, dword [esp + 4]
lea eax, [eax + ecx*8]
lea eax, [eax + ebp*4]
lea eax, [eax + edx*2]
cmp esi, 2
sbb eax, 0xffffffff
mov ecx, dword [esp + 0x44]
mov ebp, dword [ecx + 0x28]
add ebp, ebp
cmp ebp, eax
cmovle ebp, eax
mov edi, ebp
cmp ebp, dword [ecx + 0x2c]
mov esi, dword [esp + 0x48]
je 0x5e5dfa
cmp byte [esi + 0x14], 0
jne 0x5e5ce8
mov ecx, dword [esi + 8]
mov edx, esi
mov esi, dword [esi + 0x10]
cmp ecx, dword [edx + 0xc]
jne 0x5e5cd1
lea eax, [ecx + ecx*2]
shr eax, 1
test ecx, ecx
mov edi, 0x20
cmovne edi, eax
cmp edi, ecx
jbe 0x5e5cde
cmp edi, 0x3fffffff
ja 0x5e5cde
lea eax, [edi*4]
push eax
mov eax, dword [esp + 0x4c]
push dword [eax + 4]
call sym.adb.exe_OPENSSL_realloc
add esp, 8
test eax, eax
je 0x5e5cde
mov edx, dword [esp + 0x48]
mov dword [edx + 4], eax
mov dword [edx + 0xc], edi
mov ecx, dword [edx + 8]
jmp 0x5e5cd4
and edi, 0xfffffffc
mov eax, dword [esp + 0x14]
mov ecx, dword [esp + 0xc]
lea esi, [eax + ecx*4]
add esi, 0x70
mov eax, ecx
pxor xmm0, xmm0
xor ecx, ecx
pxor xmm1, xmm1
nop word cs:[eax + eax]
movdqu xmm2, xmmword [esi + ecx*4 - 0x70]
por xmm2, xmm0
movdqu xmm0, xmmword [esi + ecx*4 - 0x60]
por xmm0, xmm1
movdqu xmm1, xmmword [esi + ecx*4 - 0x50]
movdqu xmm3, xmmword [esi + ecx*4 - 0x40]
movdqu xmm4, xmmword [esi + ecx*4 - 0x30]
por xmm4, xmm1
por xmm4, xmm2
movdqu xmm2, xmmword [esi + ecx*4 - 0x20]
por xmm2, xmm3
por xmm2, xmm0
movdqu xmm0, xmmword [esi + ecx*4 - 0x10]
por xmm0, xmm4
movdqu xmm1, xmmword [esi + ecx*4]
por xmm1, xmm2
add ecx, 0x20
add edi, 0xfffffffc
jne 0x5e5b50
mov edi, edx
and edi, 0xfffffff8
test ebp, ebp
je 0x5e5bea
add ecx, eax
mov eax, dword [esp + 0x14]
lea ecx, [eax + ecx*4]
add ecx, 0x10
mov eax, dword [esp + 0xc]
shl ebp, 5
xor esi, esi
nop word cs:[eax + eax]
movdqu xmm2, xmmword [ecx + esi - 0x10]
por xmm0, xmm2
movdqu xmm2, xmmword [ecx + esi]
por xmm1, xmm2
add esi, 0x20
cmp ebp, esi
jne 0x5e5bd0
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd ecx, xmm0
cmp edx, edi
jne 0x5e5c15
mov ebp, dword [esp]
mov edi, dword [esp + 0x14]
mov edx, dword [esp + 8]
jmp 0x5e5c38
add eax, edi
mov ebp, dword [esp]
mov edi, dword [esp + 0x14]
mov edx, dword [esp + 8]
nop word cs:[eax + eax]
or ecx, dword [edi + eax*4]
inc eax
cmp ebx, eax
jne 0x5e5c30
xor esi, esi
xor eax, eax
test ecx, ecx
cmove esi, edx
setne al
or eax, esi
test eax, eax
jns 0x5e5a06
mov eax, dword [esp + 0x1c]
mov dword [eax + 0xc], 0
mov dword [eax + 4], 0
mov edi, dword [esp + 0x18]
cmp ebp, edi
mov esi, dword [esp + 0x48]
je 0x5e5caa
push dword [edi + 4]
push ebp
call fcn.0059f5c0
add esp, 8
test eax, eax
je 0x5e5cca
mov eax, dword [edi + 4]
lea ecx, [eax*4]
test ecx, ecx
mov edx, edi
je 0x5e5ca1
push ecx
push dword [edx]
push dword [ebp]
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
mov edx, dword [esp + 0x24]
add esp, 0xc
mov eax, dword [edx + 4]
mov dword [ebp + 4], eax
mov eax, dword [edx + 0xc]
mov dword [ebp + 0xc], eax
mov ebx, 1
cmp byte [esi + 0x14], 0
jne 0x5e57bd
mov eax, dword [esi + 8]
dec eax
mov dword [esi + 8], eax
mov ebx, 1
jmp 0x5e579b
xor ebx, ebx
jmp 0x5e578e
mov eax, dword [edx + 4]
mov dword [eax + ecx*4], esi
inc dword [edx + 8]
mov esi, edx
jmp 0x5e5ce8
mov esi, dword [esp + 0x48]
mov word [esi + 0x14], 0x101
push esi
call sym.adb.exe_BN_CTX_get
add esp, 4
mov edi, 0xffffffff
test ebp, ebp
js 0x5e5dd6
mov ebx, eax
test eax, eax
mov edx, dword [esp + 0x44]
je 0x5e5dd6
mov esi, ebp
shr esi, 5
cmp dword [ebx + 4], esi
jg 0x5e5da6
lea eax, [esi + 1]
mov dword [esp + 4], eax
push eax
push ebx
call fcn.0059f5c0
add esp, 8
test eax, eax
je 0x5e5dd6
mov eax, dword [ebx + 4]
mov ecx, esi
sub ecx, eax
jl 0x5e5d9b
lea edx, [ecx + 1]
and edx, 3
je 0x5e5d56
shl edx, 2
mov edi, dword [ebx]
mov dword [edi + eax*4], 0
inc eax
add edx, 0xfffffffc
jne 0x5e5d47
cmp ecx, 3
jb 0x5e5d9b
mov ecx, esi
sub ecx, eax
inc ecx
shl eax, 2
xor edx, edx
mov edi, dword [ebx]
add edi, eax
mov dword [edi + edx*4], 0
mov edi, dword [ebx]
add edi, eax
mov dword [edi + edx*4 + 4], 0
mov edi, dword [ebx]
add edi, eax
mov dword [edi + edx*4 + 8], 0
mov edi, dword [ebx]
add edi, eax
mov dword [edi + edx*4 + 0xc], 0
add edx, 4
cmp ecx, edx
jne 0x5e5d65
mov eax, dword [esp + 4]
mov dword [ebx + 4], eax
mov edx, dword [esp + 0x44]
lea eax, [edx + 0x14]
mov ecx, ebp
and ecx, 0x1f
mov edi, edx
mov edx, 1
shl edx, cl
mov ecx, dword [ebx]
or dword [ecx + esi*4], edx
push dword [esp + 0x48]
push edi
push ebx
push 0
push eax
call sym.adb.exe_BN_div
add esp, 0x14
xor edi, edi
cmp eax, 1
sbb edi, edi
or edi, ebp
mov esi, dword [esp + 0x48]
cmp byte [esi + 0x14], 0
jne 0x5e5df3
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 ecx, dword [esp + 0x44]
mov dword [ecx + 0x2c], edi
xor ebx, ebx
cmp edi, 0xffffffff
mov eax, dword [esp + 0x18]
je 0x5e578e
mov dword [esp + 4], ebp
push dword [ecx + 0x28]
push eax
mov ebp, dword [esp + 0x2c]
push ebp
mov edi, ecx
call sym.adb.exe_BN_rshift
add esp, 0xc
test eax, eax
je 0x5e578e
lea eax, [edi + 0x14]
mov edi, dword [esp + 0x10]
mov ecx, edi
mov edx, ebp
push esi
push eax
call fcn.005b1270
add esp, 8
test eax, eax
je 0x5e578e
mov eax, dword [edi + 4]
mov ecx, eax
sar ecx, 0x1f
and ecx, eax
mov edx, eax
mov ebp, dword [esp + 4]
nop word cs:[eax + eax]
test edx, edx
jle 0x5e5e84
mov esi, dword [esp + 0x10]
mov edi, dword [esi]
lea esi, [edx - 1]
cmp dword [edi + edx*4 - 4], 0
mov edx, esi
je 0x5e5e60
inc esi
mov edx, dword [esp + 0x10]
mov dword [edx + 4], esi
mov esi, dword [esp + 0x48]
jmp 0x5e5e9a
mov edx, dword [esp + 0x10]
mov dword [edx + 4], ecx
test eax, eax
mov esi, dword [esp + 0x48]
js 0x5e5e9a
mov dword [edx + 0xc], 0
mov eax, dword [esp + 0x44]
sub ebp, dword [eax + 0x28]
push ebp
push edx
mov ebp, edx
mov edi, dword [esp + 0x24]
push edi
call sym.adb.exe_BN_rshift
add esp, 0xc
test eax, eax
je 0x5e578e
mov dword [edi + 0xc], 0
mov ecx, ebp
mov edx, dword [esp + 0x44]
push esi
push edi
call fcn.005b1270
add esp, 8
test eax, eax
je 0x5e578e
mov eax, dword [ebp + 4]
mov ecx, eax
sar ecx, 0x1f
and ecx, eax
mov edx, eax
mov ebp, dword [esp]
test edx, edx
jle 0x5e5f08
mov esi, dword [esp + 0x10]
mov edi, dword [esi]
lea esi, [edx - 1]
cmp dword [edi + edx*4 - 4], 0
mov edx, esi
je 0x5e5ee8
inc esi
mov edx, dword [esp + 0x10]
mov dword [edx + 4], esi
jmp 0x5e5f1a
mov edx, dword [esp + 0x10]
mov dword [edx + 4], ecx
test eax, eax
js 0x5e5f1a
mov dword [edx + 0xc], 0
push edx
push dword [esp + 0x1c]
push ebp
call fcn.005a0310
add esp, 0xc
test eax, eax
mov esi, dword [esp + 0x48]
je 0x5e578e
mov eax, dword [ebp + 4]
mov ecx, eax
sar ecx, 0x1f
and ecx, eax
mov edx, eax
test edx, edx
jle 0x5e5f59
mov edi, dword [ebp]
lea esi, [edx - 1]
cmp dword [edi + edx*4 - 4], 0
mov edx, esi
je 0x5e5f40
inc esi
mov dword [ebp + 4], esi
jmp 0x5e5f67
mov dword [ebp + 4], ecx
test eax, eax
js 0x5e5f67
mov dword [ebp + 0xc], 0
mov dword [ebp + 0xc], 0
mov dword [esp + 0x20], 0
jmp 0x5e5f92
push 1
push dword [esp + 0x20]
call sym.adb.exe_BN_add_word
add esp, 8
test eax, eax
mov esi, dword [esp + 0x48]
je 0x5e578e
mov edi, dword [ebp]
mov edx, dword [ebp + 4]
mov eax, dword [esp + 0x44]
mov esi, dword [eax]
mov ecx, dword [eax + 4]
cmp edx, ecx
mov eax, ecx
mov dword [esp + 0xc], ecx
mov dword [esp + 0x10], edx
cmovb ecx, edx
mov edx, 0
test ecx, ecx
mov dword [esp + 4], esi
je 0x5e6000
xor edx, edx
xor eax, eax
nop word cs:[eax + eax]
mov ebp, dword [edi + eax*4]
mov ebx, edi
mov edi, dword [esi + eax*4]
mov esi, ebp
sub esi, edi
xor edi, ebp
xor esi, ebp
or esi, edi
xor esi, ebp
mov ebp, esi
sar ebp, 0x1f
not esi
shr esi, 0x1f
or esi, ebp
test edi, edi
mov edi, ebx
cmovne edx, esi
mov esi, dword [esp + 4]
inc eax
cmp ecx, eax
jne 0x5e5fd0
mov ebx, dword [esp + 0x10]
mov ebp, ebx
mov eax, dword [esp + 0xc]
sub ebp, eax
jae 0x5e604b
mov dword [esp + 8], edi
mov ebp, ebx
mov ebx, eax
sub ebx, ebp
xor ecx, ecx
mov edi, ebp
cmp ebx, 8
jb 0x5e6156
mov dword [esp + 0x24], ebx
lea eax, [ebx - 8]
mov edi, eax
shr edi, 3
inc edi
mov ebx, edi
and ebx, 3
cmp eax, 0x18
jae 0x5e6070
pxor xmm0, xmm0
xor ecx, ecx
pxor xmm1, xmm1
jmp 0x5e60e7
jbe 0x5e6064
xor ecx, ecx
cmp ebp, 8
jae 0x5e6186
mov esi, dword [esp + 0x48]
mov ebp, dword [esp]
jmp 0x5e62a0
mov esi, dword [esp + 0x48]
mov ebp, dword [esp]
jmp 0x5e62b9
and edi, 0xfffffffc
lea esi, [esi + ebp*4]
add esi, 0x70
pxor xmm0, xmm0
xor ecx, ecx
pxor xmm1, xmm1
nop word cs:[eax + eax]
movdqu xmm2, xmmword [esi + ecx*4 - 0x70]
por xmm2, xmm0
movdqu xmm0, xmmword [esi + ecx*4 - 0x60]
por xmm0, xmm1
movdqu xmm1, xmmword [esi + ecx*4 - 0x50]
movdqu xmm3, xmmword [esi + ecx*4 - 0x40]
movdqu xmm4, xmmword [esi + ecx*4 - 0x30]
por xmm4, xmm1
por xmm4, xmm2
movdqu xmm2, xmmword [esi + ecx*4 - 0x20]
por xmm2, xmm3
por xmm2, xmm0
movdqu xmm0, xmmword [esi + ecx*4 - 0x10]
por xmm0, xmm4
movdqu xmm1, xmmword [esi + ecx*4]
por xmm1, xmm2
add ecx, 0x20
add edi, 0xfffffffc
jne 0x5e6090
mov esi, dword [esp + 0x24]
mov edi, esi
and edi, 0xfffffff8
test ebx, ebx
je 0x5e612a
add ecx, ebp
mov eax, dword [esp + 4]
lea eax, [eax + ecx*4]
add eax, 0x10
shl ebx, 5
xor ecx, ecx
nop word cs:[eax + eax]
movdqu xmm2, xmmword [eax + ecx - 0x10]
por xmm0, xmm2
movdqu xmm2, xmmword [eax + ecx]
por xmm1, xmm2
add ecx, 0x20
cmp ebx, ecx
jne 0x5e6110
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd ecx, xmm0
cmp esi, edi
mov esi, dword [esp + 0x48]
je 0x5e6168
add edi, ebp
mov eax, dword [esp + 0xc]
mov esi, dword [esp + 4]
mov ebx, esi
mov esi, dword [esp + 0x48]
nop dword [eax]
or ecx, dword [ebx + edi*4]
inc edi
cmp eax, edi
jne 0x5e6160
mov eax, ecx
not eax
dec ecx
and ecx, eax
sar ecx, 0x1f
not ecx
or edx, ecx
mov edi, dword [esp + 8]
mov ebx, dword [esp + 0x10]
mov ebp, dword [esp]
jmp 0x5e62b9
mov dword [esp + 8], edi
mov dword [esp + 4], ebp
lea eax, [ebp - 8]
mov edi, eax
shr edi, 3
inc edi
mov ebp, edi
and ebp, 3
cmp eax, 0x18
jae 0x5e61ad
pxor xmm0, xmm0
xor ecx, ecx
pxor xmm1, xmm1
jmp 0x5e621f
and edi, 0xfffffffc
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0xc]
lea esi, [eax + ecx*4]
add esi, 0x70
pxor xmm0, xmm0
xor ecx, ecx
pxor xmm1, xmm1
movdqu xmm2, xmmword [esi + ecx*4 - 0x70]
por xmm2, xmm0
movdqu xmm0, xmmword [esi + ecx*4 - 0x60]
por xmm0, xmm1
movdqu xmm1, xmmword [esi + ecx*4 - 0x50]
movdqu xmm3, xmmword [esi + ecx*4 - 0x40]
movdqu xmm4, xmmword [esi + ecx*4 - 0x30]
por xmm4, xmm1
por xmm4, xmm2
movdqu xmm2, xmmword [esi + ecx*4 - 0x20]
por xmm2, xmm3
por xmm2, xmm0
movdqu xmm0, xmmword [esi + ecx*4 - 0x10]
por xmm0, xmm4
movdqu xmm1, xmmword [esi + ecx*4]
por xmm1, xmm2
add ecx, 0x20
add edi, 0xfffffffc
jne 0x5e61c8
mov edi, dword [esp + 4]
and edi, 0xfffffff8
test ebp, ebp
je 0x5e6257
add ecx, dword [esp + 0xc]
mov eax, dword [esp + 8]
lea eax, [eax + ecx*4]
add eax, 0x10
shl ebp, 5
xor ecx, ecx
movdqu xmm2, xmmword [eax + ecx - 0x10]
por xmm0, xmm2
movdqu xmm2, xmmword [eax + ecx]
por xmm1, xmm2
add ecx, 0x20
cmp ebp, ecx
jne 0x5e623d
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd ecx, xmm0
cmp dword [esp + 4], edi
mov esi, dword [esp + 0x48]
jne 0x5e6284
mov ebp, dword [esp]
mov edi, dword [esp + 8]
jmp 0x5e62a8
mov eax, dword [esp + 0xc]
add eax, edi
mov ebp, dword [esp]
mov edi, dword [esp + 8]
nop word cs:[eax + eax]
or ecx, dword [edi + eax*4]
inc eax
cmp ebx, eax
jne 0x5e62a0
xor eax, eax
test ecx, ecx
mov ecx, 0
cmovne edx, ecx
setne al
or edx, eax
test edx, edx
js 0x5e6333
cmp dword [esp + 0x20], 3
mov eax, dword [esp + 0x44]
je 0x5e6375
push eax
push ebp
push ebp
call fcn.005a0310
add esp, 0xc
xor ebx, ebx
test eax, eax
je 0x5e578e
inc dword [esp + 0x20]
mov eax, dword [ebp + 4]
mov ecx, eax
sar ecx, 0x1f
and ecx, eax
mov edx, eax
nop word cs:[eax + eax]
test edx, edx
jle 0x5e631c
mov edi, dword [ebp]
lea esi, [edx - 1]
cmp dword [edi + edx*4 - 4], 0
mov edx, esi
je 0x5e6300
inc esi
mov dword [ebp + 4], esi
jmp 0x5e5f78
mov dword [ebp + 4], ecx
test eax, eax
js 0x5e5f78
mov dword [ebp + 0xc], 0
jmp 0x5e5f78
test ebx, ebx
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x44]
je 0x5e6461
xor esi, esi
mov eax, 0
cmp ebx, 8
jb 0x5e644c
lea eax, [ebx - 8]
mov esi, eax
shr esi, 3
inc esi
mov edx, esi
and edx, 3
cmp eax, 0x18
jae 0x5e6394
pxor xmm0, xmm0
xor ecx, ecx
pxor xmm1, xmm1
jmp 0x5e63f8
push 0x142
push str.external_boringssl_src_crypto_fipsmodule_bn_exponentiation.c
push 0x65
push 0
push 3
call sym.adb.exe_ERR_put_error
add esp, 0x14
xor ebx, ebx
jmp 0x5e578e
and esi, 0xfffffffc
pxor xmm0, xmm0
xor ecx, ecx
pxor xmm1, xmm1
movdqu xmm2, xmmword [edi + ecx*4]
por xmm2, xmm0
movdqu xmm0, xmmword [edi + ecx*4 + 0x10]
por xmm0, xmm1
movdqu xmm1, xmmword [edi + ecx*4 + 0x20]
movdqu xmm3, xmmword [edi + ecx*4 + 0x30]
movdqu xmm4, xmmword [edi + ecx*4 + 0x40]
por xmm4, xmm1
por xmm4, xmm2
movdqu xmm2, xmmword [edi + ecx*4 + 0x50]
por xmm2, xmm3
por xmm2, xmm0
movdqu xmm0, xmmword [edi + ecx*4 + 0x60]
por xmm0, xmm4
movdqu xmm1, xmmword [edi + ecx*4 + 0x70]
por xmm1, xmm2
add ecx, 0x20
add esi, 0xfffffffc
jne 0x5e63a1
mov esi, ebx
and esi, 0xfffffff8
test edx, edx
je 0x5e6426
lea eax, [edi + ecx*4]
add eax, 0x10
shl edx, 5
xor ecx, ecx
movdqu xmm2, xmmword [eax + ecx - 0x10]
por xmm0, xmm2
movdqu xmm2, xmmword [eax + ecx]
por xmm1, xmm2
add ecx, 0x20
cmp edx, ecx
jne 0x5e640c
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd eax, xmm0
cmp ebx, esi
mov ecx, dword [esp + 0x18]
mov edx, dword [esp + 0x44]
je 0x5e6454
or eax, dword [edi + esi*4]
inc esi
cmp ebx, esi
jne 0x5e644c
test eax, eax
mov esi, dword [esp + 0x48]
je 0x5e6461
mov eax, dword [ecx + 0xc]
jmp 0x5e6463
xor eax, eax
mov dword [ebp + 0xc], eax
mov eax, dword [edx + 0xc]
xor eax, dword [ecx + 0xc]
mov ecx, dword [esp + 0x1c]
mov dword [ecx + 0xc], eax
mov ebx, 1
jmp 0x5e578e