Function at 0x180024a70
Capabilities:
Encrypt or decrypt data via bcrypt

Disassembly:
mov qword [rsp + 8], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x80]
sub rsp, 0x180
mov rax, qword [0x180240300]
xor rax, rsp
mov qword [rbp + 0x70], rax
mov qword [rsp + 0x58], r9
mov r15, r8
mov rsi, rdx
mov qword [rsp + 0x50], rdx
xor r14d, r14d
mov qword [rbp - 0x78], r14
mov qword [rbp - 0x70], r14
mov rdi, qword [r8 + 0x10]
mov qword [rsp + 0x50], rdi
mov dword [rbp], r14d
lea r9, [rbp + 0x6d]
mov r8, rdi
movabs r10, 0xcccccccccccccccd
nop dword [rax]
nop word [rax + rax]
dec r9
mov rax, r10
mul r8
shr rdx, 3
movzx eax, dl
shl al, 2
lea ecx, [rax + rdx]
add cl, cl
sub r8b, cl
add r8b, 0x30
mov byte [r9], r8b
mov r8, rdx
test rdx, rdx
jne 0x180024ae0
xorps xmm0, xmm0
movups xmmword [rsp + 0x60], xmm0
xorps xmm1, xmm1
movdqu xmmword [rsp + 0x70], xmm1
lea rax, [rbp + 0x6d]
cmp r9, rax
jne 0x180024b39
movdqa xmm0, xmmword [0x18020dfe0]
movdqu xmmword [rsp + 0x70], xmm0
mov byte [rsp + 0x60], r14b
jmp 0x180024b4e
lea r8, [rbp + 0x6d]
sub r8, r9
mov rdx, r9
lea rcx, [rsp + 0x60]
call fcn.180005680
nop
mov r8, qword [rsp + 0x70]
mov rcx, qword [rsp + 0x78]
mov rax, rcx
sub rax, r8
mov r13d, 7
lea r12, str.Size_:
cmp rax, r13
jb 0x180024bf6
lea rax, [r8 + 7]
mov qword [rsp + 0x70], rax
lea rbx, [rsp + 0x60]
cmp rcx, 0xf
cmova rbx, qword [rsp + 0x60]
lea rax, [0x18020133f]
cmp rax, rbx
jbe 0x180024bb3
lea rax, [rbx + r8]
cmp r12, rax
ja 0x180024bb3
cmp rbx, r12
ja 0x180024bab
mov rdi, r14
jmp 0x180024bb6
mov rdi, rbx
sub rdi, r12
jmp 0x180024bb6
mov rdi, r13
lea rcx, [rbx + 7]
inc r8
mov rdx, rbx
call fcn.1801d8b30
mov r8, rdi
mov rdx, r12
mov rcx, rbx
call fcn.1801d8b30
lea rcx, [rbx + rdi]
sub r13, rdi
lea rdx, [r12 + 7]
add rdx, rdi
mov r8, r13
call fcn.1801d8b30
lea rax, [rsp + 0x60]
mov rdi, qword [rsp + 0x50]
jmp 0x180024c13
mov qword [rsp + 0x28], r13
mov qword [rsp + 0x20], r12
xor r9d, r9d
xor r8d, r8d
mov rdx, r13
lea rcx, [rsp + 0x60]
call fcn.180050840
xorps xmm0, xmm0
movups xmmword [rbp + 0x38], xmm0
xorps xmm1, xmm1
movdqu xmmword [rbp + 0x48], xmm1
movups xmm0, xmmword [rax]
movups xmmword [rbp + 0x38], xmm0
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rbp + 0x48], xmm1
mov qword [rax + 0x10], r14
mov r13d, reloc.WS2_32.dll_ntohs
mov qword [rax + 0x18], r13
mov byte [rax], 0
lea rcx, [rbp + 0x38]
call fcn.1800203c0
nop
lea rcx, [rbp + 0x38]
call fcn.1800042b0
nop
lea rcx, [rsp + 0x60]
call fcn.1800042b0
cmp rdi, 0x14
ja 0x180024c8b
xorps xmm0, xmm0
movups xmmword [rsi], xmm0
mov qword [rsi + 0x10], r14
mov qword [rsi + 0x18], r14
xor r8d, r8d
lea rdx, [0x1801fc629]
mov rcx, rsi
call fcn.180005680
jmp 0x180024df8
xorps xmm1, xmm1
movdqu xmmword [rbp + 0x20], xmm1
mov qword [rbp + 0x30], r14
mov rdx, rdi
lea rcx, [rbp + 0x20]
call fcn.180042ee0
mov r8, rdi
xor edx, edx
mov rbx, qword [rbp + 0x20]
mov rcx, rbx
call fcn.1801d91d0
lea rax, [rbx + rdi]
mov qword [rbp + 0x28], rax
xorps xmm1, xmm1
movdqu xmmword [rbp + 0x38], xmm1
mov r12, r14
mov qword [rbp + 0x48], r14
movdqu xmmword [rbp + 8], xmm1
mov qword [rbp + 0x18], r14
mov edx, recv
lea rcx, [rbp + 8]
call fcn.180042ee0
xor eax, eax
mov rdi, qword [rbp + 8]
mov qword [rdi], rax
mov dword [rdi + 8], eax
lea rax, [rdi + 0xc]
mov qword [rbp + 0x10], rax
cmp qword [r15 + 0x18], 0xf
jbe 0x180024d09
mov rax, qword [r15]
lea r8, [rax + 0xf]
mov rdx, rax
jmp 0x180024d10
lea r8, [r15 + 0xf]
mov rdx, r15
add rdx, 3
sub r8, rdx
mov rcx, rdi
call fcn.1801d8b30
mov r8, qword [rsp + 0x50]
cmp qword [r15 + 0x18], 0xf
jbe 0x180024d33
add r8, qword [r15]
mov r15, qword [r15]
jmp 0x180024d36
add r8, r15
lea rdx, [r15 + 0xf]
sub r8, rdx
mov rcx, rbx
call fcn.1801d8b30
xor r9d, r9d
xor r8d, r8d
lea rdx, [0x180201340]
lea rcx, [rbp - 0x78]
call qword [sym.imp.bcrypt.dll_BCryptOpenAlgorithmProvider]
test eax, eax
je 0x180024e22
xorps xmm0, xmm0
movups xmmword [rsi], xmm0
mov qword [rsi + 0x10], r14
mov qword [rsi + 0x18], r14
xor r8d, r8d
lea rdx, [0x1801fc629]
mov rcx, rsi
call fcn.180005680
nop
test rdi, rdi
je 0x180024dbf
mov rdx, qword [rbp + 0x18]
sub rdx, rdi
cmp rdx, 0x1000
mov rax, rdi
jb 0x180024db6
add rdx, 0x27
mov rdi, qword [rdi - 8]
sub rax, rdi
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x18002520e
mov rcx, rdi
call fcn.18017bcc0
nop
test rbx, rbx
je 0x180024df8
mov rdx, qword [rbp + 0x30]
sub rdx, rbx
mov rax, rbx
cmp rdx, 0x1000
jb 0x180024df0
add rdx, 0x27
mov rbx, qword [rbx - 8]
sub rax, rbx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x1800251fc
mov rcx, rbx
call fcn.18017bcc0
mov rax, rsi
mov rcx, qword [rbp + 0x70]
xor rcx, rsp
call fcn.18017b860
mov rbx, qword [rsp + 0x1c0]
add rsp, 0x180
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
mov dword [rsp + 0x20], r14d
mov r9d, 0x20
lea r8, str.ChainingModeGCM
lea rdx, str.ChainingMode
mov rcx, qword [rbp - 0x78]
call qword [sym.imp.bcrypt.dll_BCryptSetProperty]
test eax, eax
je 0x180024e5a
xor edx, edx
mov rcx, qword [rbp - 0x78]
call qword [sym.imp.bcrypt.dll_BCryptCloseAlgorithmProvider]
jmp 0x180024d64
mov dword [rsp + 0x30], r14d
mov rcx, qword [rsp + 0x58]
mov eax, dword [rcx]
mov dword [rsp + 0x28], eax
mov rax, qword [rcx + 8]
mov qword [rsp + 0x20], rax
xor r9d, r9d
xor r8d, r8d
lea rdx, [rbp - 0x70]
mov rcx, qword [rbp - 0x78]
call qword [sym.imp.bcrypt.dll_BCryptGenerateSymmetricKey]
test eax, eax
jne 0x180024e49
xorps xmm0, xmm0
xor eax, eax
movups xmmword [rbp - 0x60], xmm0
movups xmmword [rbp - 0x50], xmm0
movups xmmword [rbp - 0x40], xmm0
movups xmmword [rbp - 0x30], xmm0
movups xmmword [rbp - 0x20], xmm0
mov qword [rbp - 0x10], rax
mov dword [rbp - 0x60], 0x58
mov dword [rbp - 0x5c], 1
mov rcx, qword [rsp + 0x50]
add rcx, 0xffffffffffffffe1
mov qword [rsp + 0x58], rcx
mov qword [rbp - 0x58], rdi
mov dword [rbp - 0x50], recv
lea rax, [rbx + rcx]
mov qword [rbp - 0x38], rax
mov dword [rbp - 0x30], reloc.WS2_32.dll_recv
mov dword [rsp + 0x48], r14d
lea rax, [rbp]
mov qword [rsp + 0x40], rax
mov dword [rsp + 0x38], r14d
mov qword [rsp + 0x30], r14
mov dword [rsp + 0x28], r14d
mov qword [rsp + 0x20], r14
lea r9, [rbp - 0x60]
mov r8d, ecx
mov rdx, rbx
mov rcx, qword [rbp - 0x70]
call qword [sym.imp.bcrypt.dll_BCryptDecrypt]
test eax, eax
je 0x180024f33
mov rcx, qword [rbp - 0x70]
call qword [sym.imp.bcrypt.dll_BCryptDestroyKey]
xor edx, edx
mov rcx, qword [rbp - 0x78]
call qword [sym.imp.bcrypt.dll_BCryptCloseAlgorithmProvider]
jmp 0x180024d64
mov eax, dword [rbp]
mov edx, eax
test eax, eax
je 0x180024f4c
lea rcx, [rbp + 0x38]
call fcn.18004b860
mov eax, dword [rbp]
mov r12, qword [rbp + 0x48]
mov dword [rsp + 0x48], r14d
lea rcx, [rbp]
mov qword [rsp + 0x40], rcx
mov dword [rsp + 0x38], eax
mov r15, qword [rbp + 0x38]
mov qword [rsp + 0x30], r15
mov dword [rsp + 0x28], r14d
mov qword [rsp + 0x20], r14
lea r9, [rbp - 0x60]
mov r8d, dword [rsp + 0x58]
mov rdx, rbx
mov rcx, qword [rbp - 0x70]
call qword [sym.imp.bcrypt.dll_BCryptDecrypt]
mov rcx, qword [rbp - 0x70]
test eax, eax
je 0x180025041
call qword [sym.imp.bcrypt.dll_BCryptDestroyKey]
xor edx, edx
mov rcx, qword [rbp - 0x78]
call qword [sym.imp.bcrypt.dll_BCryptCloseAlgorithmProvider]
xorps xmm0, xmm0
movups xmmword [rsi], xmm0
mov qword [rsi + 0x10], r14
mov qword [rsi + 0x18], r14
xor r8d, r8d
lea rdx, [0x1801fc629]
mov rcx, rsi
call fcn.180005680
nop
test rdi, rdi
je 0x180025000
mov rdx, qword [rbp + 0x18]
sub rdx, rdi
mov rax, rdi
cmp rdx, 0x1000
jb 0x180024ff7
add rdx, 0x27
mov rdi, qword [rdi - 8]
sub rax, rdi
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x18002520e
mov rcx, rdi
call fcn.18017bcc0
nop
test r15, r15
je 0x180024dbf
sub r12, r15
mov rax, r15
cmp r12, 0x1000
jb 0x180025031
add r12, 0x27
mov r15, qword [r15 - 8]
sub rax, r15
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x1800251f0
mov rdx, r12
mov rcx, r15
call fcn.18017bcc0
jmp 0x180024dbf
test rcx, rcx
je 0x18002504c
call qword [sym.imp.bcrypt.dll_BCryptDestroyKey]
mov rcx, qword [rbp - 0x78]
test rcx, rcx
je 0x18002505d
xor edx, edx
call qword [sym.imp.bcrypt.dll_BCryptCloseAlgorithmProvider]
xorps xmm0, xmm0
movups xmmword [rsi], xmm0
mov qword [rsi + 0x10], r14
mov qword [rsi + 0x18], r13
mov rcx, qword [rbp + 0x40]
cmp r15, rcx
jne 0x18002507c
mov byte [rsi], 0
jmp 0x180025147
mov rax, rcx
sub rax, r15
mov qword [rsp + 0x58], rax
movabs rdx, 0x7fffffffffffffff
cmp rax, rdx
ja 0x180025202
cmp rax, 0xf
jbe 0x18002511c
mov r13, rax
or r13, 0xf
cmp r13, rdx
jbe 0x1800250dc
mov r13, rdx
movabs rax, 0x8000000000000000
add rax, 0x27
mov rcx, rax
call fcn.18017bcf4
test rax, rax
je 0x180025208
lea r14, [rax + 0x27]
and r14, 0xffffffffffffffe0
mov qword [r14 - 8], rax
jmp 0x180025111
mov eax, reloc.WS2_32.dll_shutdown
cmp r13, rax
cmovb r13, rax
lea rcx, [r13 + 1]
test rcx, rcx
je 0x180025111
cmp rcx, 0x1000
jb 0x180025109
lea rax, [rcx + 0x27]
cmp rax, rcx
jbe 0x1800251f6
jmp 0x1800250bd
call fcn.18017bcf4
mov r14, rax
mov qword [rsi], r14
mov qword [rsi + 0x18], r13
mov rcx, qword [rbp + 0x40]
mov r14, rsi
cmp r13, 0xf
jbe 0x180025128
mov r14, qword [rsi]
sub rcx, r15
mov r8, rcx
mov rdx, r15
mov rcx, r14
call fcn.1801d8b30
mov rax, qword [rsp + 0x58]
mov qword [rsi + 0x10], rax
mov byte [r14 + rax], 0
test rdi, rdi
je 0x180025181
mov rdx, qword [rbp + 0x18]
sub rdx, rdi
mov rax, rdi
cmp rdx, 0x1000
jb 0x180025178
add rdx, 0x27
mov rdi, qword [rdi - 8]
sub rax, rdi
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x18002520e
mov rcx, rdi
call fcn.18017bcc0
nop
test r15, r15
je 0x1800251b6
sub r12, r15
mov rax, r15
cmp r12, 0x1000
jb 0x1800251aa
add r12, 0x27
mov r15, qword [r15 - 8]
sub rax, r15
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x1800251f0
mov rdx, r12
mov rcx, r15
call fcn.18017bcc0
nop
test rbx, rbx
je 0x180024df8
mov rdx, qword [rbp + 0x30]
sub rdx, rbx
mov rax, rbx
cmp rdx, 0x1000
jb 0x180024df0
add rdx, 0x27
mov rbx, qword [rbx - 8]
sub rax, rbx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x1800251fc
jmp 0x180024df0
call fcn.1801b27d8
nop
call fcn.180001e00
nop
call fcn.1801b27d8
nop
call fcn.180002000
int3
call fcn.1801b27d8
nop
call fcn.1801b27d8
int3