Function at 0x7d3140
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff0
sub esp, 0x50
mov esi, ecx
mov edx, dword [ebp + 0x34]
mov edi, dword [ebp + 0x2c]
movzx ebx, byte [ecx + 0x271]
and bl, 1
neg bl
and bl, byte [ecx + 0x26d]
mov dword [esp + 0x2c], 0
cmp dword [ecx], 0
je 0x7d319b
lea eax, [esi + 8]
lea ecx, [esp + 0x2c]
push edx
push edi
push ecx
push eax
call sym.adb.exe_EVP_AEAD_CTX_tag_len
add esp, 0x10
test eax, eax
jne 0x7d319f
push 0x144
push str.external_boringssl_src_ssl_ssl_aead_ctx.cc
push 0xc8
jmp 0x7d31ea
mov dword [esp + 0x2c], edx
mov edx, dword [ebp + 0x28]
mov ecx, dword [ebp + 0xc]
cmp edx, ecx
je 0x7d31b9
mov eax, edi
add edi, edx
cmp edi, ecx
jbe 0x7d31bb
add eax, ecx
cmp eax, edx
ja 0x7d31db
jmp 0x7d31bb
add edi, edx
cmp edi, dword [ebp + 8]
jbe 0x7d31ca
movzx eax, bl
add eax, dword [ebp + 8]
cmp eax, edx
ja 0x7d31db
mov ebx, dword [ebp + 0x10]
cmp edi, ebx
jbe 0x7d3204
mov eax, dword [esp + 0x2c]
add eax, ebx
cmp eax, edx
jbe 0x7d3204
push 0x14a
push str.external_boringssl_src_ssl_ssl_aead_ctx.cc
push 0xbd
push 0
push 0x10
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 0x30
mov eax, dword [ebp + 0x30]
cmp dword [esi], 0
je 0x7d3285
mov ebx, dword [ebp + 0x1c]
mov dword [esp + 0x34], 0
mov dword [esp + 0x30], 0
mov dword [esp + 0x39], 0
mov dword [esp + 0x35], 0
movzx edx, byte [esi + 0x271]
test dl, 0x10
jne 0x7d32b8
movzx eax, word [ebp + 0x18]
movzx ecx, byte [ebp + 0x14]
mov ch, dl
mov edx, dword [ebx]
mov ebx, dword [ebx + 4]
mov dword [esp + 0x34], ebx
mov dword [esp + 0x30], edx
mov dl, ch
mov byte [esp + 0x38], cl
mov byte [esp + 0x39], ah
mov byte [esp + 0x3a], al
mov eax, 0xb
test ch, 8
jne 0x7d327b
mov eax, dword [ebp + 0x2c]
rol ax, 8
mov word [esp + 0x3b], ax
mov eax, 0xd
mov dword [esp + 0x40], eax
lea ecx, [esp + 0x30]
jmp 0x7d32c4
mov edi, eax
mov esi, ebx
mov eax, dword [ebp + 0x2c]
test eax, eax
je 0x7d329b
push eax
push edx
push ecx
call sub.api_ms_win_crt_private_l1_1_0.dll_memmove
add esp, 0xc
mov bl, 1
mov eax, dword [ebp + 0x34]
test eax, eax
je 0x7d31f8
push eax
push edi
push esi
call sub.api_ms_win_crt_private_l1_1_0.dll_memmove
add esp, 0xc
jmp 0x7d31f8
lea eax, [ebp + 0x20]
mov ecx, dword [eax]
mov eax, dword [eax + 4]
mov dword [esp + 0x40], eax
xorps xmm0, xmm0
movaps xmmword [esp + 0x10], xmm0
mov dword [esp + 0x24], 0
mov dword [esp + 0x20], 0
movzx ebx, byte [esi + 0x26c]
test dl, 4
mov dword [esp + 0x44], ecx
jne 0x7d3311
test ebx, ebx
je 0x7d3365
lea eax, [esi + 0x260]
lea ecx, [esp + 0x10]
mov byte [esp + 0xb], dl
mov dword [esp + 0xc], ebx
push ebx
push eax
push ecx
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
movzx edx, byte [esp + 0x17]
jmp 0x7d3331
movzx eax, byte [esi + 0x26d]
sub ebx, eax
je 0x7d3365
lea eax, [esp + 0x10]
mov dword [esp + 0xc], ebx
push ebx
push 0
push eax
mov ebx, edx
call sub.api_ms_win_crt_string_l1_1_0.dll_memset
mov edx, ebx
add esp, 0xc
test dl, 2
jne 0x7d3372
movzx ebx, byte [esi + 0x26d]
test ebx, ebx
mov eax, dword [esp + 0xc]
je 0x7d33a4
add eax, esp
add eax, 0x10
push ebx
push dword [ebp + 0x1c]
push eax
mov byte [esp + 0x17], dl
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
movzx edx, byte [esp + 0x17]
add esp, 0xc
jmp 0x7d33a6
mov dword [esp + 0xc], 0
test dl, 2
je 0x7d3339
mov eax, dword [esp + 0xc]
add eax, esp
add eax, 0x10
movzx ecx, byte [esi + 0x26d]
push ecx
push eax
call sym.adb.exe_RAND_bytes
add esp, 8
test eax, eax
je 0x7d31f6
movzx ebx, byte [esi + 0x26d]
movzx edx, byte [esi + 0x271]
jmp 0x7d33a6
xor ebx, ebx
movzx ebx, bl
mov byte [esp + 0xb], dl
test dl, 1
jne 0x7d33b8
mov edx, dword [esp + 0xc]
jmp 0x7d3403
mov eax, dword [ebp + 8]
cmp edi, eax
mov edi, eax
mov ecx, dword [ebp + 0x28]
mov edx, dword [esp + 0xc]
jbe 0x7d33d9
lea eax, [ebx + edi]
cmp eax, ecx
jbe 0x7d33d9
push 0x178
jmp 0x7d31e0
test ebx, ebx
je 0x7d3403
movzx eax, byte [esi + 0x26c]
add eax, esp
add eax, 0x10
push ebx
push eax
push edi
call sub.api_ms_win_crt_private_l1_1_0.dll_memcpy
mov edx, dword [esp + 0x18]
add esp, 0xc
movzx eax, byte [esi + 0x271]
mov byte [esp + 0xb], al
add edx, ebx
mov dword [esp + 0xc], edx
test byte [esp + 0xb], 4
mov edi, dword [ebp + 0x34]
mov ebx, dword [ebp + 0x10]
je 0x7d35e1
movzx eax, byte [esi + 0x26c]
test eax, eax
je 0x7d35e1
xor ecx, ecx
cmp al, 8
jb 0x7d35d0
xor ecx, ecx
cmp al, 0x20
jb 0x7d3599
mov ecx, eax
movups xmm0, xmmword [esi + 0x260]
movups xmm1, xmmword [esi + 0x270]
xorps xmm0, xmmword [esp + 0x10]
xorps xmm1, xmmword [esp + 0x20]
and ecx, 0xffffffe0
movaps xmmword [esp + 0x10], xmm0
movaps xmmword [esp + 0x20], xmm1
cmp ecx, 0x20
je 0x7d3591
movups xmm0, xmmword [esi + 0x280]
movups xmm1, xmmword [esi + 0x290]
xorps xmm0, xmmword [esp + 0x30]
xorps xmm1, xmmword [esp + 0x40]
movaps xmmword [esp + 0x30], xmm0
movaps xmmword [esp + 0x40], xmm1
cmp ecx, 0x40
je 0x7d3591
movups xmm0, xmmword [esi + 0x2a0]
movups xmm1, xmmword [esi + 0x2b0]
xorps xmm0, xmmword [esp + 0x50]
xorps xmm1, xmmword [esp + 0x60]
movaps xmmword [esp + 0x50], xmm0
movaps xmmword [esp + 0x60], xmm1
cmp ecx, 0x60
je 0x7d3591
movups xmm0, xmmword [esi + 0x2c0]
movups xmm1, xmmword [esi + 0x2d0]
xorps xmm0, xmmword [esp + 0x70]
xorps xmm1, xmmword [esp + 0x80]
movaps xmmword [esp + 0x70], xmm0
movaps xmmword [esp + 0x80], xmm1
cmp ecx, 0x80
je 0x7d3591
movups xmm0, xmmword [esi + 0x2e0]
movups xmm1, xmmword [esi + 0x2f0]
xorps xmm0, xmmword [esp + 0x90]
xorps xmm1, xmmword [esp + 0xa0]
movaps xmmword [esp + 0x90], xmm0
movaps xmmword [esp + 0xa0], xmm1
cmp ecx, 0xa0
je 0x7d3591
movups xmm0, xmmword [esi + 0x300]
movups xmm1, xmmword [esi + 0x310]
xorps xmm0, xmmword [esp + 0xb0]
xorps xmm1, xmmword [esp + 0xc0]
movaps xmmword [esp + 0xb0], xmm0
movaps xmmword [esp + 0xc0], xmm1
cmp ecx, 0xc0
je 0x7d3591
movups xmm0, xmmword [esi + 0x320]
movups xmm1, xmmword [esi + 0x330]
xorps xmm0, xmmword [esp + 0xd0]
xorps xmm1, xmmword [esp + 0xe0]
movaps xmmword [esp + 0xd0], xmm0
movaps xmmword [esp + 0xe0], xmm1
cmp ecx, eax
je 0x7d35e1
test al, 0x18
je 0x7d35d0
mov edx, ecx
mov ecx, eax
and ecx, 0xfffffff8
movsd xmm0, qword [esi + edx + 0x260]
movsd xmm1, qword [esp + edx + 0x10]
xorps xmm1, xmm0
movlps qword [esp + edx + 0x10], xmm1
add edx, 8
cmp ecx, edx
jne 0x7d35a0
cmp ecx, eax
je 0x7d35e1
nop word cs:[eax + eax]
movzx edx, byte [esi + ecx + 0x260]
xor byte [esp + ecx + 0x10], dl
inc ecx
cmp eax, ecx
jne 0x7d35d0
mov dword [esp + 0x48], 0
add esi, 8
lea eax, [esp + 0x10]
lea ecx, [esp + 0x48]
push dword [esp + 0x40]
push dword [esp + 0x48]
push edi
push dword [ebp + 0x30]
push dword [ebp + 0x2c]
push dword [ebp + 0x28]
push dword [esp + 0x24]
push eax
push dword [esp + 0x4c]
push ecx
push ebx
push dword [ebp + 0xc]
push esi
call sym.adb.exe_EVP_AEAD_CTX_seal_scatter
add esp, 0x34
test eax, eax
setne bl
jmp 0x7d31f8