Function at 0x1801d7da0
Capabilities:
Resolve function by parsing pe exports

Disassembly:
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x78]
mov eax, 0x178
call fcn.18038e800
sub rsp, rax
mov rax, qword [0x1804de580]
xor rax, rsp
mov qword [rbp + 0x60], rax
mov eax, dword [rbp + 0xe8]
xor edi, edi
mov r14, qword [rbp + 0xe0]
mov r15, r8
mov r12, qword [rbp + 0xf0]
mov rsi, rdx
mov qword [rsp + 0x50], r9
mov rbx, rcx
mov qword [rsp + 0x48], r14
mov r13d, edi
cmp eax, 0xffffffff
jne 0x1801d7e07
mov eax, dword [rcx + 0x10]
mov dword [rsp + 0x40], eax
jmp 0x1801d7e18
test eax, eax
mov ecx, 1
cmove ecx, eax
mov dword [rsp + 0x40], ecx
mov dword [rbx + 0x10], ecx
test rsi, rsi
jne 0x1801d7e47
cmp qword [rbx], rdi
jne 0x1801d7e47
call fcn.1801c20a0
lea r8, str.evp_cipher_init_internal
lea edx, [rsi + 0x75]
lea rcx, str.cryptoevpevp_enc.c
call fcn.1801c21c0
mov edx, 0x83
jmp 0x1801d80ff
cmp qword [rbx + 8], rdi
je 0x1801d7e69
mov rax, qword [rbx]
test rax, rax
je 0x1801d7e69
test rsi, rsi
je 0x1801d8732
mov eax, dword [rax]
cmp dword [rdx], eax
jne 0x1801d7e6e
jmp 0x1801d8732
test rsi, rsi
je 0x1801d7e7d
test r15, r15
jne 0x1801d7e7d
mov ecx, dword [rdx]
call fcn.18020a4b0
mov r13, rax
cmp qword [rbx + 8], rdi
jne 0x1801d84da
test r13, r13
jne 0x1801d84da
test r15, r15
jne 0x1801d84da
test rsi, rsi
je 0x1801d7ffc
cmp dword [rsi + 0x14], 2
je 0x1801d84da
mov rax, qword [rbx]
test rax, rax
je 0x1801d7eef
mov rdx, qword [rax + 0x28]
test rdx, rdx
je 0x1801d7eca
mov rcx, rbx
call rdx
test eax, eax
je case.default.0x1801d87f1
mov rax, qword [rbx]
lea r14, [rbx + 0x78]
mov rcx, qword [r14]
lea r8, str.cryptoevpevp_enc.c
mov r9d, 0xa4
movsxd rdx, dword [rax + 0x30]
call fcn.1801b8380
mov qword [r14], rdi
jmp 0x1801d7ef3
lea r14, [rbx + 0x78]
mov rax, qword [rbx]
test rax, rax
je 0x1801d8011
mov r15d, dword [rbx + 0x70]
cmp qword [rax + 0x70], rdi
je 0x1801d7f8e
mov rcx, qword [rbx + 0xa8]
test rcx, rcx
je 0x1801d7f2e
mov rdx, qword [rax + 0xb0]
test rdx, rdx
je 0x1801d7f27
call rdx
mov qword [rbx + 0xa8], rdi
mov r14, qword [rbx + 0xb0]
test r14, r14
je 0x1801d7fd6
cmp dword [r14 + 0x14], edi
jne 0x1801d7fd6
mov eax, 0xffffffff
lock xadd dword [r14 + 0x78], eax
sub eax, 1
jg 0x1801d7fd6
mov rcx, qword [r14 + 0x60]
lea rdx, str.cryptoevpevp_enc.c
mov r8d, 0x6c7
call fcn.1801b82c0
mov rcx, qword [r14 + 0x70]
call fcn.1801c3ff0
mov r8d, 0x6ca
lea rdx, str.cryptoevpevp_enc.c
mov rcx, r14
call fcn.1801b82c0
jmp 0x1801d7fd6
mov rdx, qword [rax + 0x28]
test rdx, rdx
je 0x1801d7fa0
mov rcx, rbx
call rdx
test eax, eax
je 0x1801d7fed
mov rcx, qword [r14]
test rcx, rcx
je 0x1801d7fb8
mov rax, qword [rbx]
movsxd rdx, dword [rax + 0x30]
test edx, edx
je 0x1801d7fb8
call fcn.180001240
mov rcx, qword [r14]
lea rdx, str.cryptoevpevp_enc.c
mov r8d, 0x3f
call fcn.1801b82c0
mov rcx, qword [rbx + 8]
call fcn.1801c2700
mov r8d, 0xb8
xor edx, edx
mov rcx, rbx
call fcn.1803c90d0
mov dword [rbx + 0x6c], 0xffffffff
mov r13d, dword [rsp + 0x40]
mov dword [rbx + 0x10], r13d
mov dword [rbx + 0x70], r15d
jmp 0x1801d8016
mov rax, qword [rbx]
test rax, rax
je 0x1801d800e
cmp dword [rax + 0x14], 2
je 0x1801d84da
mov rsi, qword [rbx]
mov r13d, dword [rsp + 0x40]
cmp qword [rsi + 0x70], rdi
jne 0x1801d812d
mov ecx, dword [rsi]
test ecx, ecx
jne 0x1801d802f
lea rax, str.NULL
jmp 0x1801d8034
call fcn.1801b9790
lea rcx, [0x1801d7850]
mov r8, rax
mov qword [rsp + 0x30], rcx
lea r9, [0x180489228]
lea rcx, [fcn.1801d65a0]
mov edx, 2
mov qword [rsp + 0x28], rcx
lea rcx, [0x1801d7910]
mov qword [rsp + 0x20], rcx
xor ecx, ecx
call fcn.1801c5d40
mov rsi, rax
test rax, rax
je case.default.0x1801d87f1
mov r14, qword [rbx + 0xb0]
test r14, r14
je 0x1801d80d0
cmp dword [r14 + 0x14], edi
jne 0x1801d80d0
mov eax, 0xffffffff
lock xadd dword [r14 + 0x78], eax
sub eax, 1
jg 0x1801d80d0
mov rcx, qword [r14 + 0x60]
lea rdx, str.cryptoevpevp_enc.c
mov r8d, 0x6c7
call fcn.1801b82c0
mov rcx, qword [r14 + 0x70]
call fcn.1801c3ff0
mov r8d, 0x6ca
lea rdx, str.cryptoevpevp_enc.c
mov rcx, r14
call fcn.1801b82c0
mov qword [rbx + 0xb0], rsi
cmp qword [rsi + 0x70], rdi
jne 0x1801d812d
call fcn.1801c20a0
lea r8, str.evp_cipher_init_internal
mov edx, 0xcc
lea rcx, str.cryptoevpevp_enc.c
call fcn.1801c21c0
mov edx, 0x86
xor r8d, r8d
lea ecx, [r8 + 6]
call fcn.1801c2320
xor eax, eax
mov rcx, qword [rbp + 0x60]
xor rcx, rsp
call fcn.18038db10
add rsp, 0x178
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret
cmp rsi, qword [rbx + 0xb0]
je 0x1801d819c
cmp dword [rsi + 0x14], edi
jne 0x1801d813f
lock inc dword [rsi + 0x78]
mov r14, qword [rbx + 0xb0]
test r14, r14
je 0x1801d8195
cmp dword [r14 + 0x14], edi
jne 0x1801d8195
mov eax, 0xffffffff
lock xadd dword [r14 + 0x78], eax
sub eax, 1
jg 0x1801d8195
mov rcx, qword [r14 + 0x60]
lea rdx, str.cryptoevpevp_enc.c
mov r8d, 0x6c7
call fcn.1801b82c0
mov rcx, qword [r14 + 0x70]
call fcn.1801c3ff0
mov r8d, 0x6ca
lea rdx, str.cryptoevpevp_enc.c
mov rcx, r14
call fcn.1801b82c0
mov qword [rbx + 0xb0], rsi
mov qword [rbx], rsi
cmp qword [rbx + 0xa8], rdi
jne 0x1801d81dc
mov rcx, qword [rsi + 0x70]
call fcn.1801c3a60
mov rcx, rax
call qword [rsi + 0x80]
mov qword [rbx + 0xa8], rax
test rax, rax
jne 0x1801d81dc
call fcn.1801c20a0
lea r8, str.evp_cipher_init_internal
mov edx, 0xde
jmp 0x1801d80ee
mov eax, dword [rbx + 0x70]
bt eax, 8
jae 0x1801d827f
bts eax, 8
mov qword [rsp + 0x60], rdi
mov dword [rbx + 0x70], eax
mov rax, qword [rbx]
mov dword [rsp + 0x68], edi
mov qword [rsp + 0x70], rdi
mov qword [rsp + 0x78], rdi
mov qword [rbp - 0x80], rdi
mov qword [rbp - 0x78], rdi
mov dword [rbp - 0x70], edi
mov qword [rbp - 0x68], rdi
mov qword [rbp - 0x60], rdi
mov qword [rbp - 0x58], rdi
mov dword [rsp + 0x40], edi
test rax, rax
je 0x1801d822c
cmp qword [rax + 0x70], rdi
je 0x1801d827f
lea r8, [rsp + 0x40]
lea rdx, [0x1803ed828]
lea rcx, [rbp - 0x50]
call fcn.1801ba8a0
mov rdx, qword [rbx + 0xa8]
lea r8, [rsp + 0x60]
mov rcx, qword [rbx]
movups xmm0, xmmword [rax]
movaps xmmword [rsp + 0x60], xmm0
movups xmm1, xmmword [rax + 0x10]
movaps xmmword [rsp + 0x70], xmm1
movsd xmm0, qword [rax + 0x20]
movsd qword [rbp - 0x80], xmm0
call fcn.1801c6ad0
test eax, eax
mov ecx, edi
setne cl
test ecx, ecx
je case.default.0x1801d87f1
test r12, r12
je 0x1801d83e4
lea rdx, str.keylen
mov qword [rbp - 0x20], rdi
mov rcx, r12
mov dword [rbp - 0x18], edi
mov qword [rbp - 0x10], rdi
lea rsi, [rbp - 0x20]
mov qword [rbp - 8], rdi
mov qword [rbp], rdi
mov qword [rbp + 8], rdi
mov dword [rbp + 0x10], edi
mov qword [rbp + 0x18], rdi
mov qword [rbp + 0x20], rdi
mov qword [rbp + 0x28], rdi
mov qword [rbp + 0x30], rdi
mov dword [rbp + 0x38], edi
mov qword [rbp + 0x40], rdi
mov qword [rbp + 0x48], rdi
mov qword [rbp + 0x50], rdi
call fcn.1801bba60
test rax, rax
je 0x1801d82f6
movups xmm0, xmmword [rax]
lea rsi, [rbp + 8]
movaps xmmword [rbp - 0x20], xmm0
movups xmm1, xmmword [rax + 0x10]
movaps xmmword [rbp - 0x10], xmm1
movsd xmm0, qword [rax + 0x20]
movsd qword [rbp], xmm0
lea rdx, str.ivlen
mov rcx, r12
call fcn.1801bba60
mov rcx, rax
test rax, rax
je 0x1801d832c
movups xmm0, xmmword [rcx]
mov rax, rsi
add rsi, 0x28
movups xmmword [rax], xmm0
movups xmm1, xmmword [rcx + 0x10]
movups xmmword [rax + 0x10], xmm1
movsd xmm0, qword [rcx + 0x20]
movsd qword [rax + 0x20], xmm0
lea rax, [rbp - 0x20]
cmp rsi, rax
je 0x1801d83e4
mov rax, qword [rbx]
test rax, rax
je 0x1801d83bd
mov r8, qword [rax + 0xd0]
test r8, r8
je 0x1801d83bd
mov rcx, qword [rbx + 0xa8]
lea rdx, [rbp - 0x20]
call r8
test eax, eax
jle 0x1801d83bb
lea rdx, str.keylen
lea rcx, [rbp - 0x20]
call fcn.1801bba60
test rax, rax
je 0x1801d838d
lea rdx, [rbx + 0x68]
mov rcx, rax
call fcn.1801baac0
test eax, eax
jne 0x1801d838d
mov dword [rbx + 0x68], 0xffffffff
jmp 0x1801d83bd
lea rdx, str.ivlen
lea rcx, [rbp - 0x20]
call fcn.1801bba60
test rax, rax
je 0x1801d83e4
lea rdx, [rbx + 0x6c]
mov rcx, rax
call fcn.1801baac0
test eax, eax
jne 0x1801d83e4
mov dword [rbx + 0x6c], 0xffffffff
jmp 0x1801d83bd
jne 0x1801d83e4
call fcn.1801c20a0
lea r8, str.evp_cipher_init_internal
mov edx, 0x109
lea rcx, str.cryptoevpevp_enc.c
call fcn.1801c21c0
mov edx, 0xdd
jmp 0x1801d80ff
mov rax, qword [rbx]
test r13d, r13d
je 0x1801d8463
cmp qword [rax + 0x88], rdi
jne 0x1801d840b
call fcn.1801c20a0
lea r8, str.evp_cipher_init_internal
mov edx, 0x112
jmp 0x1801d80ee
mov r15, qword [rsp + 0x48]
test r15, r15
jne 0x1801d8419
mov esi, edi
jmp 0x1801d8423
mov rcx, rbx
call fcn.1801bd460
mov esi, eax
mov r14, qword [rsp + 0x50]
test r14, r14
je 0x1801d8437
mov rcx, rbx
call fcn.1801bd5c0
mov edi, eax
mov r10, qword [rbx]
mov r9, r15
movsxd rcx, esi
mov rdx, r14
mov qword [rsp + 0x28], r12
mov qword [rsp + 0x20], rcx
mov rcx, qword [rbx + 0xa8]
movsxd r8, edi
call qword [r10 + 0x88]
jmp 0x1801d810d
cmp qword [rax + 0x90], rdi
jne 0x1801d8482
call fcn.1801c20a0
lea r8, str.evp_cipher_init_internal
mov edx, 0x121
jmp 0x1801d80ee
mov r15, qword [rsp + 0x48]
test r15, r15
jne 0x1801d8490
mov esi, edi
jmp 0x1801d849a
mov rcx, rbx
call fcn.1801bd460
mov esi, eax
mov r14, qword [rsp + 0x50]
test r14, r14
je 0x1801d84ae
mov rcx, rbx
call fcn.1801bd5c0
mov edi, eax
mov r10, qword [rbx]
mov r9, r15
mov rcx, qword [rbx + 0xa8]
mov rdx, r14
movsxd rax, esi
movsxd r8, edi
mov qword [rsp + 0x28], r12
mov qword [rsp + 0x20], rax
call qword [r10 + 0x90]
jmp 0x1801d810d
mov r14, qword [rbx + 0xb0]
cmp qword [rbx], r14
jne 0x1801d84e9
mov qword [rbx], rdi
test r14, r14
je 0x1801d8538
cmp dword [r14 + 0x14], edi
jne 0x1801d8538
mov eax, 0xffffffff
lock xadd dword [r14 + 0x78], eax
sub eax, 1
jg 0x1801d8538
mov rcx, qword [r14 + 0x60]
lea rdx, str.cryptoevpevp_enc.c
mov r8d, 0x6c7
call fcn.1801b82c0
mov rcx, qword [r14 + 0x70]
call fcn.1801c3ff0
mov r8d, 0x6ca
lea rdx, str.cryptoevpevp_enc.c
mov rcx, r14
call fcn.1801b82c0
mov qword [rbx + 0xb0], rdi
test rsi, rsi
je 0x1801d872d
mov rax, qword [rbx]
test rax, rax
je 0x1801d865a
mov r12d, dword [rbx + 0x70]
cmp qword [rax + 0x70], rdi
je 0x1801d85ee
mov rcx, qword [rbx + 0xa8]
test rcx, rcx
je 0x1801d8638
mov rdx, qword [rax + 0xb0]
mov r14, rdi
test rdx, rdx
je 0x1801d858a
call rdx
mov r14, qword [rbx + 0xb0]
mov qword [rbx + 0xa8], rdi
test r14, r14
je 0x1801d8638
cmp dword [r14 + 0x14], edi
jne 0x1801d8638
mov eax, 0xffffffff
lock xadd dword [r14 + 0x78], eax
sub eax, 1
jg 0x1801d8638
mov rcx, qword [r14 + 0x60]
lea rdx, str.cryptoevpevp_enc.c
mov r8d, 0x6c7
call fcn.1801b82c0
mov rcx, qword [r14 + 0x70]
call fcn.1801c3ff0
mov r8d, 0x6ca
lea rdx, str.cryptoevpevp_enc.c
mov rcx, r14
call fcn.1801b82c0
jmp 0x1801d8638
mov rdx, qword [rax + 0x28]
test rdx, rdx
je 0x1801d8600
mov rcx, rbx
call rdx
test eax, eax
je 0x1801d864f
mov rcx, qword [rbx + 0x78]
test rcx, rcx
je 0x1801d8619
mov rax, qword [rbx]
movsxd rdx, dword [rax + 0x30]
test edx, edx
je 0x1801d8619
call fcn.180001240
mov rcx, qword [rbx + 0x78]
lea rdx, str.cryptoevpevp_enc.c
mov r8d, 0x3f
call fcn.1801b82c0
mov rcx, qword [rbx + 8]
call fcn.1801c2700
mov r8d, 0xb8
xor edx, edx
mov rcx, rbx
call fcn.1803c90d0
mov dword [rbx + 0x6c], 0xffffffff
mov eax, dword [rsp + 0x40]
mov dword [rbx + 0x10], eax
mov dword [rbx + 0x70], r12d
test r15, r15
je 0x1801d8681
mov rcx, r15
call fcn.1801c2820
test eax, eax
jne 0x1801d8689
call fcn.1801c20a0
lea r8, str.evp_cipher_init_internal
mov edx, 0x141
jmp 0x1801d80ee
mov r15, r13
test r13, r13
je 0x1801d86b1
mov edx, dword [rsi]
mov rcx, r15
call fcn.18020a440
mov rsi, rax
test rax, rax
jne 0x1801d86b4
call fcn.1801c20a0
lea r8, str.evp_cipher_init_internal
mov edx, 0x151
jmp 0x1801d80ee
mov r15, rdi
mov qword [rbx + 8], r15
mov qword [rbx], rsi
movsxd rax, dword [rsi + 0x30]
test eax, eax
je 0x1801d86e9
mov rcx, rax
lea rdx, str.cryptoevpevp_enc.c
mov r8d, 0x162
call fcn.1801b8550
mov qword [rbx + 0x78], rax
test rax, rax
jne 0x1801d86ed
mov qword [rbx], rdi
jmp case.default.0x1801d87f1
mov qword [rbx + 0x78], rdi
mov eax, dword [rsi + 8]
and dword [rbx + 0x70], 1
mov dword [rbx + 0x68], eax
mov rax, qword [rbx]
test byte [rax + 0x10], 0x40
je 0x1801d872d
xor r9d, r9d
xor r8d, r8d
xor edx, edx
mov rcx, rbx
call fcn.1801d56a0
test eax, eax
jg 0x1801d872d
mov qword [rbx], rdi
call fcn.1801c20a0
lea r8, str.evp_cipher_init_internal
mov edx, 0x170
jmp 0x1801d80ee
mov r14, qword [rsp + 0x48]
mov rax, qword [rbx]
test rax, rax
je case.default.0x1801d87f1
mov ecx, dword [rax + 4]
cmp ecx, 0x10
ja 0x1801d8750
mov eax, 0x10102
bt eax, ecx
jb 0x1801d8769
mov r8d, 0x17e
lea rdx, str.cryptoevpevp_enc.c
lea rcx, str.assertion_failed:_ctx__cipher__block_size__1__ctx__cipher__block_size__8__ctx__cipher__block_size__16
call fcn.1801b8590
test byte [rbx + 0x70], 1
jne 0x1801d87ad
mov rcx, rbx
call fcn.1801bd430
mov rcx, rax
call fcn.1801bda70
cmp eax, 0x10002
jne 0x1801d87ad
call fcn.1801c20a0
lea r8, str.evp_cipher_init_internal
mov edx, 0x182
lea rcx, str.cryptoevpevp_enc.c
call fcn.1801c21c0
mov edx, 0xaa
jmp 0x1801d80ff
mov rcx, rbx
call fcn.1801bd430
mov rcx, rax
call fcn.1801bda40
test al, 0x10
jne case.0x1801d87f1.0
mov rcx, rbx
call fcn.1801bd430
mov rcx, rax
call fcn.1801bda70
cmp eax, 5
ja case.default.0x1801d87f1
lea rdx, [0x180000000]
cdqe
mov ecx, dword [rdx + rax*4 + 0x1d88e8]
add rcx, rdx
jmp rcx
mov dword [rbx + 0x58], edi
mov rcx, rbx
call fcn.1801bd460
cmp eax, 0x10
ja 0x1801d8833
mov r15, qword [rsp + 0x48]
lea rsi, [rbx + 0x18]
movsxd r14, eax
test r15, r15
je 0x1801d8822
mov r8, r14
mov rdx, r15
mov rcx, rsi
call fcn.1803c8a30
lea rcx, [rbx + 0x28]
mov r8, r14
mov rdx, rsi
call fcn.1803c8a30
jmp 0x1801d8886
call fcn.1801c20a0
mov edx, 0x197
lea r8, str.evp_cipher_init_internal
lea rcx, str.cryptoevpevp_enc.c
call fcn.1801c21c0
mov edx, 0xc2
jmp 0x1801d80ff
mov dword [rbx + 0x58], edi
test r14, r14
je case.0x1801d87f1.0
mov rcx, rbx
call fcn.1801bd460
lea ecx, [rax - 1]
cmp ecx, 0xf
ja 0x1801d88d7
movsxd r8, eax
lea rcx, [rbx + 0x28]
mov rdx, r14
call fcn.1803c8a30
mov r15, qword [rsp + 0x48]
mov r14, qword [rsp + 0x50]
test r14, r14
jne 0x1801d8899
mov rax, qword [rbx]
test byte [rax + 0x10], 0x20
je 0x1801d88b6
mov r10, qword [rbx]
mov r8, r15
mov r9d, dword [rsp + 0x40]
mov rdx, r14
mov rcx, rbx
call qword [r10 + Ordinal_27]
test eax, eax
je case.default.0x1801d87f1
mov rcx, qword [rbx]
mov eax, 1
mov dword [rbx + 0x14], edi
mov dword [rbx + 0x80], edi
mov edx, dword [rcx + 4]
dec edx
mov dword [rbx + 0x84], edx
jmp 0x1801d810d
call fcn.1801c20a0
mov edx, 0x1a5
jmp 0x1801d883d