Function at 0x5a6c70
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0xe0
mov edx, dword [ebp + 0x14]
cmp dword [edx + 0xc], 0
je 0x5a6cac
push 0x239
push str.external_boringssl_src_crypto_fipsmodule_bn_exponentiation.c
push 0x6d
push 0
push 3
call sym.adb.exe_ERR_put_error
add esp, 0x14
xor ebx, ebx
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret
mov edi, dword [ebp + 0x18]
mov ecx, dword [ebp + 0xc]
mov esi, dword [ebp + 8]
cmp dword [ecx + 0xc], 0
jne 0x5a6fe7
mov ebx, dword [ecx]
mov eax, dword [ecx + 4]
mov ecx, dword [edx]
mov dword [esp + 8], ecx
mov esi, dword [edx + 4]
cmp eax, esi
mov dword [esp + 0x18], esi
mov dword [esp + 0x10], eax
cmovb esi, eax
test esi, esi
mov dword [esp + 0xc], ebx
je 0x5a6d22
xor eax, eax
xor edi, edi
nop word cs:[eax + eax]
mov ecx, dword [esp + 0xc]
mov ecx, dword [ecx + edi*4]
mov edx, dword [esp + 8]
mov edx, dword [edx + edi*4]
mov ebx, ecx
sub ebx, edx
xor edx, ecx
xor ebx, ecx
or ebx, edx
xor ebx, ecx
mov ecx, ebx
sar ecx, 0x1f
not ebx
shr ebx, 0x1f
or ebx, ecx
test edx, edx
cmovne eax, ebx
inc edi
cmp esi, edi
jne 0x5a6cf0
jmp 0x5a6d24
xor eax, eax
mov ecx, dword [esp + 0x10]
mov edi, ecx
mov ebx, dword [esp + 0x18]
sub edi, ebx
mov edx, dword [esp + 0xc]
jae 0x5a6d50
mov edi, ebx
sub edi, ecx
xor esi, esi
cmp edi, 8
mov dword [esp + 0x14], eax
jae 0x5a6d91
mov eax, dword [ebp + 0x18]
mov edx, dword [ebp + 0x14]
jmp 0x5a6ea8
mov esi, eax
jbe 0x5a6db9
mov dword [esp + 0x14], esi
xor esi, esi
cmp edi, 8
jb 0x5a6fb5
mov dword [esp + 8], edi
lea ecx, [edi - 8]
mov edi, ecx
shr edi, 3
inc edi
mov esi, edi
and esi, 3
mov dword [esp + 0x1c], esi
cmp ecx, 0x18
jae 0x5a6ed6
pxor xmm0, xmm0
xor esi, esi
pxor xmm1, xmm1
jmp 0x5a6f47
lea edx, [edi - 8]
mov ebx, edx
shr ebx, 3
inc ebx
mov eax, ebx
and eax, 3
mov dword [esp + 0xc], eax
cmp edx, 0x18
mov eax, edi
jae 0x5a6dc1
pxor xmm0, xmm0
xor esi, esi
pxor xmm1, xmm1
mov edx, dword [ebp + 0x14]
jmp 0x5a6e37
mov edi, dword [ebp + 0x18]
jmp 0x5a6fda
and ebx, 0xfffffffc
mov edx, dword [esp + 8]
lea edi, [edx + ecx*4]
add edi, 0x70
pxor xmm0, xmm0
xor esi, esi
pxor xmm1, xmm1
mov edx, dword [ebp + 0x14]
nop dword [eax + 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 0x5a6de0
mov dword [esp + 0x1c], eax
mov ebx, eax
and ebx, 0xfffffff8
mov eax, dword [esp + 0xc]
test eax, eax
je 0x5a6e7a
add esi, ecx
mov edi, dword [esp + 8]
lea esi, [edi + esi*4]
add esi, 0x10
shl eax, 5
xor edi, edi
nop dword [eax]
movdqu xmm2, xmmword [esi + edi - 0x10]
por xmm0, xmm2
movdqu xmm2, xmmword [esi + edi]
por xmm1, xmm2
add edi, 0x20
cmp eax, edi
jne 0x5a6e60
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd esi, xmm0
cmp dword [esp + 0x1c], ebx
jne 0x5a6e9f
mov eax, dword [ebp + 0x18]
jmp 0x5a6eb8
add ecx, ebx
mov eax, dword [ebp + 0x18]
mov ebx, dword [esp + 0x18]
mov edi, dword [esp + 8]
nop dword [eax]
or esi, dword [edi + ecx*4]
inc ecx
cmp ebx, ecx
jne 0x5a6eb0
mov ecx, esi
not ecx
dec esi
and esi, ecx
sar esi, 0x1f
not esi
mov ecx, dword [esp + 0x14]
or ecx, esi
mov esi, ecx
mov ecx, dword [ebp + 0xc]
mov edi, eax
jmp 0x5a6fe0
and edi, 0xfffffffc
lea ebx, [edx + ebx*4]
add ebx, 0x70
pxor xmm0, xmm0
xor esi, esi
pxor xmm1, xmm1
nop dword [eax]
movdqu xmm2, xmmword [ebx + esi*4 - 0x70]
por xmm2, xmm0
movdqu xmm0, xmmword [ebx + esi*4 - 0x60]
por xmm0, xmm1
movdqu xmm1, xmmword [ebx + esi*4 - 0x50]
movdqu xmm3, xmmword [ebx + esi*4 - 0x40]
movdqu xmm4, xmmword [ebx + esi*4 - 0x30]
por xmm4, xmm1
por xmm4, xmm2
movdqu xmm2, xmmword [ebx + esi*4 - 0x20]
por xmm2, xmm3
por xmm2, xmm0
movdqu xmm0, xmmword [ebx + esi*4 - 0x10]
por xmm0, xmm4
movdqu xmm1, xmmword [ebx + esi*4]
por xmm1, xmm2
add esi, 0x20
add edi, 0xfffffffc
jne 0x5a6ef0
mov edi, dword [esp + 8]
and edi, 0xfffffff8
mov eax, dword [esp + 0x1c]
test eax, eax
mov ecx, dword [esp + 0x10]
je 0x5a6f8a
add esi, dword [esp + 0x18]
lea esi, [edx + esi*4]
add esi, 0x10
shl eax, 5
xor ebx, ebx
nop dword [eax]
movdqu xmm2, xmmword [esi + ebx - 0x10]
por xmm0, xmm2
movdqu xmm2, xmmword [esi + ebx]
por xmm1, xmm2
add ebx, 0x20
cmp eax, ebx
jne 0x5a6f70
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd esi, xmm0
cmp dword [esp + 8], edi
jne 0x5a6faf
mov edi, dword [ebp + 0x18]
jmp 0x5a6fc8
mov ebx, dword [esp + 0x18]
add ebx, edi
mov edi, dword [ebp + 0x18]
nop dword [eax + eax]
or esi, dword [edx + ebx*4]
inc ebx
cmp ecx, ebx
jne 0x5a6fc0
xor edx, edx
xor ecx, ecx
test esi, esi
cmove edx, dword [esp + 0x14]
setne cl
or ecx, edx
mov esi, ecx
mov edx, dword [ebp + 0x14]
mov ecx, dword [ebp + 0xc]
test esi, esi
mov esi, dword [ebp + 8]
js 0x5a7030
push edi
push edx
push ecx
push esi
push 0
call sym.adb.exe_BN_div
add esp, 0x14
xor ebx, ebx
test eax, eax
je 0x5a6ca2
cmp dword [esi + 0xc], 0
mov ecx, esi
mov edx, dword [ebp + 0x14]
je 0x5a7030
cmp dword [edx + 0xc], 0
mov eax, sym.adb.exe_BN_add
mov ecx, sym.adb.exe_BN_sub
cmove ecx, eax
push edx
push esi
push esi
call ecx
mov edx, dword [ebp + 0x14]
add esp, 0xc
mov ecx, esi
test eax, eax
je 0x5a6ca2
mov ebx, dword [ebp + 0x10]
cmp dword [edx + 4], 0
jle 0x5a7044
mov eax, dword [edx]
test byte [eax], 1
jne 0x5a71ff
mov dword [esp + 0x10], ecx
pxor xmm0, xmm0
movdqu xmmword [esp + 0xcc], xmm0
movdqu xmmword [esp + 0xc0], xmm0
movdqu xmmword [esp + 0xb0], xmm0
movdqu xmmword [esp + 0xa0], xmm0
movdqu xmmword [esp + 0x90], xmm0
movdqu xmmword [esp + 0x80], xmm0
movdqu xmmword [esp + 0x70], xmm0
movdqu xmmword [esp + 0x60], xmm0
movdqa xmmword [esp + 0x40], xmm0
movdqa xmmword [esp + 0x30], xmm0
movdqa xmmword [esp + 0x20], xmm0
mov dword [esp + 0x50], 0
mov edx, dword [ebx + 4]
mov ecx, edx
sar ecx, 0x1f
and ecx, edx
mov eax, edx
nop word cs:[eax + eax]
test eax, eax
jle 0x5a70d1
mov esi, dword [ebx]
mov esi, dword [esi + eax*4 - 4]
dec eax
test esi, esi
je 0x5a70c0
jmp 0x5a70e2
test edx, edx
jns 0x5a71c9
mov eax, dword [ebx]
mov esi, dword [eax + ecx*4 - 4]
dec ecx
mov eax, ecx
shl eax, 5
xor ebx, ebx
test esi, esi
setne bl
mov edi, esi
shr edi, 0x10
xor ecx, ecx
cmp esi, 0x10000
cmovb edi, esi
setae cl
shl ecx, 4
mov dword [esp + 0xc], ecx
mov edx, edi
shr edx, 8
xor ecx, ecx
cmp edi, 0x100
cmovb edx, edi
setae cl
mov dword [esp + 8], ecx
mov esi, edx
shr esi, 4
xor ecx, ecx
cmp edx, 0x10
cmovb esi, edx
setae cl
mov dword [esp + 0x18], ecx
mov edi, esi
shr edi, 2
xor edx, edx
cmp esi, 4
cmovb edi, esi
setae dl
xor ecx, ecx
cmp edi, 2
mov edi, dword [ebp + 0x18]
setae cl
or ebx, eax
add ebx, dword [esp + 0xc]
mov eax, dword [esp + 8]
lea eax, [ebx + eax*8]
mov esi, dword [esp + 0x18]
lea eax, [eax + esi*4]
lea ebx, [eax + edx*2]
add ebx, ecx
je 0x5a71c9
cmp byte [edi + 0x14], 0
jne 0x5a7227
mov ecx, dword [edi + 8]
mov esi, dword [edi + 0x10]
cmp ecx, dword [edi + 0xc]
jne 0x5a7213
lea eax, [ecx + ecx*2]
shr eax, 1
test ecx, ecx
mov edi, 0x20
cmovne edi, eax
cmp edi, ecx
jbe 0x5a721e
cmp edi, 0x3fffffff
ja 0x5a721e
lea eax, [edi*4]
push eax
mov eax, dword [ebp + 0x18]
push dword [eax + 4]
call sym.adb.exe_OPENSSL_realloc
add esp, 8
test eax, eax
je 0x5a721e
mov ecx, dword [ebp + 0x18]
mov dword [ecx + 4], eax
mov dword [ecx + 0xc], edi
mov edi, ecx
mov ecx, dword [ecx + 8]
jmp 0x5a7216
push 1
mov esi, dword [ebp + 8]
push esi
call fcn.0059f5c0
add esp, 8
test eax, eax
je 0x5a6ca0
mov dword [esi + 0xc], 0
mov eax, dword [esi]
mov dword [eax], 1
mov dword [esi + 4], 1
mov ebx, 1
jmp 0x5a6ca2
push 0
push edi
push edx
push ebx
push ecx
push esi
call sym.adb.exe_BN_mod_exp_mont
add esp, 0x18
jmp 0x5a6ca4
mov eax, dword [edi + 4]
mov dword [eax + ecx*4], esi
inc dword [edi + 8]
jmp 0x5a7227
mov edi, dword [ebp + 0x18]
mov word [edi + 0x14], 0x101
mov dword [esp + 0xc], ebx
push edi
call sym.adb.exe_BN_CTX_get
add esp, 4
mov esi, eax
push edi
call sym.adb.exe_BN_CTX_get
add esp, 4
mov dword [esp + 0x5c], eax
xor ebx, ebx
test esi, esi
je 0x5a7864
test eax, eax
je 0x5a7864
mov dword [esp + 8], eax
pxor xmm0, xmm0
movdqa xmmword [esp + 0x40], xmm0
movdqa xmmword [esp + 0x30], xmm0
movdqa xmmword [esp + 0x20], xmm0
mov dword [esp + 0x50], 0
mov edx, dword [ebp + 0x14]
cmp dword [edx + 0xc], 0
mov dword [esp + 0x18], esi
je 0x5a72dd
cmp esi, edx
je 0x5a72ce
push dword [edx + 4]
push esi
mov esi, edx
call fcn.0059f5c0
add esp, 8
test eax, eax
je 0x5a7864
mov eax, dword [esi + 4]
lea ecx, [eax*4]
test ecx, ecx
mov edx, esi
mov esi, dword [esp + 0x18]
je 0x5a72c5
push ecx
push dword [edx]
push dword [esi]
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
mov edx, dword [ebp + 0x14]
add esp, 0xc
mov eax, dword [edx + 4]
mov dword [esi + 4], eax
mov eax, dword [edx + 0xc]
mov dword [esi + 0xc], eax
mov dword [esi + 0xc], 0
lea ecx, [esp + 0x20]
mov edx, esi
jmp 0x5a72e1
lea ecx, [esp + 0x20]
call fcn.005e5460
test eax, eax
jle 0x5a7864
push edi
push dword [ebp + 0x14]
push dword [esp + 0x18]
mov esi, dword [esp + 0x14]
push esi
push 0
call sym.adb.exe_BN_div
add esp, 0x14
test eax, eax
je 0x5a7864
cmp dword [esi + 0xc], 0
mov ecx, esi
je 0x5a7343
mov edx, dword [ebp + 0x14]
cmp dword [edx + 0xc], 0
mov eax, sym.adb.exe_BN_add
mov ecx, sym.adb.exe_BN_sub
cmove ecx, eax
push edx
push dword [esp + 0xc]
push dword [esp + 0x10]
call ecx
mov ecx, dword [esp + 0x14]
add esp, 0xc
test eax, eax
je 0x5a7864
mov eax, dword [ecx + 4]
test eax, eax
je 0x5a784e
mov ecx, dword [ecx]
xor esi, esi
mov edx, 0
cmp eax, 8
jb 0x5a742d
lea edi, [eax - 8]
mov esi, edi
shr esi, 3
inc esi
mov edx, esi
and edx, 3
cmp edi, 0x18
jae 0x5a737f
pxor xmm0, xmm0
xor edi, edi
pxor xmm1, xmm1
jmp 0x5a73e3
and esi, 0xfffffffc
pxor xmm0, xmm0
xor edi, edi
pxor xmm1, xmm1
movdqu xmm2, xmmword [ecx + edi*4]
por xmm2, xmm0
movdqu xmm0, xmmword [ecx + edi*4 + 0x10]
por xmm0, xmm1
movdqu xmm1, xmmword [ecx + edi*4 + 0x20]
movdqu xmm3, xmmword [ecx + edi*4 + 0x30]
movdqu xmm4, xmmword [ecx + edi*4 + 0x40]
por xmm4, xmm1
por xmm4, xmm2
movdqu xmm2, xmmword [ecx + edi*4 + 0x50]
por xmm2, xmm3
por xmm2, xmm0
movdqu xmm0, xmmword [ecx + edi*4 + 0x60]
por xmm0, xmm4
movdqu xmm1, xmmword [ecx + edi*4 + 0x70]
por xmm1, xmm2
add edi, 0x20
add esi, 0xfffffffc
jne 0x5a738c
mov esi, eax
and esi, 0xfffffff8
test edx, edx
je 0x5a7411
lea edi, [ecx + edi*4]
add edi, 0x10
shl edx, 5
xor ebx, ebx
movdqu xmm2, xmmword [edi + ebx - 0x10]
por xmm0, xmm2
movdqu xmm2, xmmword [edi + ebx]
por xmm1, xmm2
add ebx, 0x20
cmp edx, ebx
jne 0x5a73f7
por xmm0, xmm1
pshufd xmm1, xmm0, 0xee
por xmm1, xmm0
pshufd xmm0, xmm1, 0x55
por xmm0, xmm1
movd edx, xmm0
jmp 0x5a7431
or edx, dword [ecx + esi*4]
inc esi
cmp eax, esi
jne 0x5a742d
test edx, edx
mov edx, dword [esp + 8]
je 0x5a784e
mov eax, 6
cmp dword [esp + 0xc], 0x29f
jg 0x5a747c
mov eax, 5
cmp dword [esp + 0xc], 0xef
jg 0x5a747c
mov eax, 4
cmp dword [esp + 0xc], 0x4f
jg 0x5a747c
mov esi, 1
mov eax, 3
cmp dword [esp + 0xc], 0x18
jl 0x5a74fa
mov dword [esp + 0x10], eax
lea eax, [esp + 0x20]
mov ecx, dword [esp + 0x18]
push dword [ebp + 0x18]
push eax
push edx
call fcn.005e5580
add esp, 0xc
xor ebx, ebx
test eax, eax
je 0x5a7864
mov eax, dword [esp + 0x10]
mov ecx, eax
dec cl
mov edi, 1
mov eax, 1
shl eax, cl
mov dword [esp + 8], eax
mov esi, dword [ebp + 0x18]
push esi
call sym.adb.exe_BN_CTX_get
add esp, 4
mov dword [esp + edi*4 + 0x5c], eax
test eax, eax
je 0x5a7864
mov edx, dword [esp + edi*4 + 0x58]
mov ecx, eax
push esi
lea eax, [esp + 0x24]
push eax
push dword [esp + 0x20]
call fcn.005e5580
add esp, 0xc
test eax, eax
je 0x5a7864
inc edi
cmp dword [esp + 8], edi
jne 0x5a74b7
mov esi, dword [esp + 0x10]
push 1
mov edi, dword [ebp + 8]
push edi
call fcn.0059f5c0
add esp, 8
test eax, eax
je 0x5a78e5
dec dword [esp + 0xc]
mov dword [edi + 0xc], 0
mov eax, dword [edi]
mov dword [eax], 1
mov dword [edi + 4], 1
mov al, 1
mov dword [esp + 0x18], eax
mov dword [esp + 8], 0
lea edi, [esp + 0x20]
add dword [esp + 0xc], 0xfffffffb
jmp 0x5a755a
mov eax, dword [esp + 0xc]
dec eax
mov ebx, 1
mov dword [esp + 0xc], eax
cmp eax, 0xfffffffa
je 0x5a7864
mov ecx, dword [esp + 0xc]
add ecx, 5
js 0x5a757f
mov eax, dword [ebp + 0x10]
mov eax, dword [eax + 4]
mov ebx, ecx
shr ebx, 5
cmp ebx, eax
jae 0x5a757f
mov edx, dword [ebp + 0x10]
mov edx, dword [edx]
mov ebx, dword [edx + ebx*4]
bt ebx, ecx
jb 0x5a75a1
test byte [esp + 8], 1
je 0x5a7543
mov ecx, dword [ebp + 8]
mov edx, ecx
push dword [ebp + 0x18]
push edi
push ecx
call fcn.005e5580
add esp, 0xc
test eax, eax
jne 0x5a7543
jmp 0x5a78e5
mov dword [esp + 8], 0
mov dword [esp + 0x10], 1
cmp esi, 2
jl 0x5a77d5
cmp dword [esp + 0xc], 0xfffffffb
je 0x5a77d5
mov ecx, dword [esp + 0xc]
lea ebx, [ecx + 4]
mov dword [esp + 0x10], ebx
shr ebx, 5
mov dword [esp + 8], 0
cmp ebx, eax
jae 0x5a75fd
mov ecx, dword [edx + ebx*4]
mov dword [esp + 8], ecx
mov ebx, dword [esp + 0x10]
mov ecx, dword [esp + 8]
bt ecx, ebx
mov ecx, 0
setb cl
mov dword [esp + 8], ecx
mov ecx, dword [esp + 8]
add ecx, ecx
inc ecx
mov dword [esp + 0x10], ecx
cmp dword [esp + 0xc], 0xfffffffc
je 0x5a77d5
mov ecx, dword [esp + 0xc]
lea ebx, [ecx + 3]
mov dword [esp + 0x1c], ebx
shr ebx, 5
mov dword [esp + 0x14], 0
cmp ebx, eax
jae 0x5a764b
mov ecx, dword [edx + ebx*4]
mov dword [esp + 0x14], ecx
mov ebx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x14]
bt ecx, ebx
mov ecx, 0
setb cl
mov dword [esp + 0x14], ecx
cmp dword [esp + 8], 1
mov ecx, 0
adc cl, 1
mov ebx, dword [esp + 0x10]
shl ebx, cl
or ebx, 1
cmp dword [esp + 0x14], 0
mov ecx, dword [esp + 0x10]
cmovne ecx, ebx
mov dword [esp + 0x10], ecx
mov ecx, 2
mov ebx, dword [esp + 8]
cmovne ebx, ecx
mov dword [esp + 8], ebx
cmp esi, 3
je 0x5a77d5
cmp dword [esp + 0xc], 0xfffffffd
je 0x5a77d5
mov ecx, dword [esp + 0xc]
lea ebx, [ecx + 2]
mov dword [esp + 0x1c], ebx
shr ebx, 5
mov dword [esp + 0x14], 0
cmp ebx, eax
jae 0x5a76cd
mov ecx, dword [edx + ebx*4]
mov dword [esp + 0x14], ecx
mov ebx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x14]
bt ecx, ebx
mov ecx, 0
setb cl
mov dword [esp + 0x14], ecx
mov ecx, dword [esp + 8]
xor cl, 3
mov ebx, dword [esp + 0x10]
shl ebx, cl
or ebx, 1
cmp dword [esp + 0x14], 0
mov ecx, dword [esp + 0x10]
cmovne ecx, ebx
mov dword [esp + 0x10], ecx
mov ecx, 3
mov ebx, dword [esp + 8]
cmovne ebx, ecx
mov dword [esp + 8], ebx
cmp esi, 4
je 0x5a77d5
cmp dword [esp + 0xc], 0xfffffffe
je 0x5a77d5
mov ecx, dword [esp + 0xc]
lea ebx, [ecx + 1]
mov dword [esp + 0x1c], ebx
shr ebx, 5
mov dword [esp + 0x14], 0
cmp ebx, eax
jae 0x5a7749
mov ecx, dword [edx + ebx*4]
mov dword [esp + 0x14], ecx
mov ebx, dword [esp + 0x1c]
mov ecx, dword [esp + 0x14]
bt ecx, ebx
mov ecx, 0
setb cl
mov dword [esp + 0x14], ecx
mov cl, 4
sub cl, byte [esp + 8]
mov ebx, dword [esp + 0x10]
shl ebx, cl
or ebx, 1
cmp dword [esp + 0x14], 0
mov ecx, dword [esp + 0x10]
cmovne ecx, ebx
mov dword [esp + 0x10], ecx
mov ecx, 4
mov ebx, dword [esp + 8]
cmovne ebx, ecx
mov dword [esp + 8], ebx
cmp esi, 5
je 0x5a77d5
cmp dword [esp + 0xc], 0xffffffff
je 0x5a77d5
mov ecx, dword [esp + 0xc]
shr ecx, 5
mov dword [esp + 0x14], 0
cmp ecx, eax
jae 0x5a77aa
mov eax, dword [edx + ecx*4]
xor edx, edx
mov ecx, dword [esp + 0xc]
bt eax, ecx
setb dl
mov dword [esp + 0x14], edx
mov cl, 5
mov edx, dword [esp + 8]
sub cl, dl
mov ebx, dword [esp + 0x10]
mov eax, ebx
shl eax, cl
or eax, 1
cmp dword [esp + 0x14], 0
cmovne ebx, eax
mov dword [esp + 0x10], ebx
mov eax, 5
cmovne edx, eax
mov dword [esp + 8], edx
test byte [esp + 0x18], 1
jne 0x5a7800
mov eax, dword [esp + 8]
lea ebx, [eax + 1]
mov ecx, dword [ebp + 8]
mov edx, ecx
push dword [ebp + 0x18]
push edi
push ecx
call fcn.005e5580
add esp, 0xc
test eax, eax
je 0x5a78e5
dec ebx
jne 0x5a77e3
mov eax, dword [esp + 0x10]
and eax, 0xfffffffe
mov ecx, dword [ebp + 8]
mov edx, ecx
push dword [ebp + 0x18]
push edi
push dword [esp + eax*2 + 0x64]
call fcn.005e5580
add esp, 0xc
test eax, eax
je 0x5a78e5
mov eax, dword [esp + 0xc]
sub eax, dword [esp + 8]
mov dword [esp + 0x18], 0
add eax, 4
mov dword [esp + 0xc], eax
mov al, 1
mov dword [esp + 8], eax
mov ebx, 1
jns 0x5a753c
jmp 0x5a7864
mov eax, dword [ebp + 8]
mov dword [eax + 0xc], 0
mov dword [eax + 4], 0
mov ebx, 1
mov esi, dword [ebp + 0x18]
cmp byte [esi + 0x14], 0
jne 0x5a7880
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, dword [esp + 0x30]
test al, 2
jne 0x5a7898
push dword [esp + 0x20]
call sym.adb.exe_OPENSSL_free
add esp, 4
mov eax, dword [esp + 0x30]
test al, 1
jne 0x5a78a6
mov dword [esp + 0x20], 0
jmp 0x5a78b3
lea eax, [esp + 0x20]
push eax
call sym.adb.exe_OPENSSL_free
add esp, 4
mov eax, dword [esp + 0x44]
test al, 2
jne 0x5a78cb
push dword [esp + 0x34]
call sym.adb.exe_OPENSSL_free
add esp, 4
mov eax, dword [esp + 0x44]
test al, 1
je 0x5a6ca2
lea eax, [esp + 0x34]
push eax
call sym.adb.exe_OPENSSL_free
add esp, 4
jmp 0x5a6ca2
xor ebx, ebx
jmp 0x5a7864