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

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x68
mov rdi, r8
mov r14, qword [rdx + 0x58]
mov qword [rdx + 0x18], rdx
mov qword [rdx + 0x20], rdx
mov qword [rdx + 0x28], rdx
mov rax, r14
or rax, 0x400
mov qword [rdx + 0x58], rax
movzx eax, word [0x1400e48f8]
mov dword [rdx + 0x3c], eax
movzx eax, word [0x1400e48f8]
mov dword [rdx + 0x40], eax
cmp qword [r8 + 0x50], 0x10
jne 0x140021f72
mov rbx, r9
mov rsi, rdx
mov r15, rcx
lea rcx, [0x1400e4520]
call fcn.140001b80
mov r12, rax
mov r13, rax
mov r8d, dword [0x1400e4530]
mov rcx, rax
xor edx, edx
call fcn.1400924f0
mov dword [r12 + 0x318], 0x19
mov qword [r12 + 8], r15
vxorps xmm0, xmm0, xmm0
vmovups ymmword [r12 + 0x30], ymm0
vmovups ymmword [r12 + 0x48], ymm0
mov dword [r12 + 0x38], 0x68
lea rax, [0x1400e49c0]
mov qword [r12 + 0x278], rax
mov rax, qword [0x1400e49c0]
mov qword [r12 + 0x280], rax
mov dword [r12 + 0x288], 0
mov qword [r12 + 0x270], 0
vxorps xmm1, xmm1, xmm1
vmovups xmmword [r12 + 0x290], xmm1
mov qword [r12 + 0x2a0], 0
lea rax, [0x1400e4a40]
mov qword [r12 + 0x70], rax
mov ecx, dword [0x1400e4a40]
mov dword [r12 + 0x78], ecx
mov edx, dword [0x1400e4a44]
mov dword [r12 + 0x7c], edx
mov dword [r12 + 0x80], 0
mov qword [r12 + 0x68], 0
vmovups xmmword [r12 + 0x98], xmm1
vmovups xmmword [r12 + 0x88], xmm1
mov qword [r12 + 0xa8], rax
mov dword [r12 + 0xb0], ecx
mov dword [r12 + 0xb4], edx
mov dword [r12 + 0xb8], 0
vmovups xmmword [r12 + 0xd0], xmm1
vmovups xmmword [r12 + 0xc0], xmm1
mov qword [r12 + 0xe0], rax
mov dword [r12 + 0xe8], ecx
mov dword [r12 + 0xec], edx
mov dword [r12 + 0xf0], 0
vmovups xmmword [r12 + 0xf8], xmm1
mov qword [r12 + 0x108], 0
vmovups ymmword [r12 + 0x2a8], ymm0
vmovups ymmword [r12 + 0x2c0], ymm0
mov dword [r12 + 0x2b0], 0x18
test r15, r15
je 0x140021e0f
mov eax, 0x100
and eax, dword [r15 + 0x318]
or eax, 0x19
mov dword [r13 + 0x318], eax
mov qword [rsi + 0xa8], r13
mov qword [rsp + 0x50], r13
mov qword [r13 + 0x110], rsi
mov qword [rsp + 0x48], rdi
mov rbp, qword [rdi + 0x40]
mov r15, qword [rbp]
mov rdi, rbx
cmp r15, rbx
je 0x140022045
mov edi, 0xffffffff
jmp 0x140021e5c
mov r15, qword [r15]
cmp r15, rbx
je 0x140022042
mov rax, qword [r15 + 0x50]
test eax, 0xc01
jne 0x140021fe2
test eax, 0x20000
je 0x140021fe7
mov r13, qword [r15 + 0x10]
cmp r13, 0xe
je 0x140021ed0
cmp r13, 0xb
jne 0x140021f8b
mov rax, qword [r15 + 8]
mov rcx, qword [rax]
movabs rdx, 0x746e6f635f6f6e23
xor rcx, rdx
mov rax, qword [rax + 3]
movabs rdx, 0x747865746e6f635f
xor rax, rdx
or rax, rcx
jne 0x140021f8b
lea rax, [rdi - 0x7fffffff]
or qword [rsi + 0x58], rax
jmp 0x140021e50
mov rcx, qword [r15 + 8]
lea rdx, str.call_location
mov r8, r13
vzeroupper
call fcn.140092690
test eax, eax
jne 0x140021f8b
mov rax, qword [rsi + 0x58]
mov rcx, rax
movabs rdx, 0x200000000
or rcx, rdx
mov qword [rsi + 0x58], rcx
test eax, 0x40000
je 0x140021e50
mov rbx, qword [r15 + 0x10]
xor esi, esi
call qword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
lea rcx, [0x1400c67c0]
nop word cs:[rax + rax]
mov edx, dword [rcx + rsi*4 + 0x10]
cmp edx, eax
je 0x14002242b
mov edx, dword [rcx + rsi*4 + 0x14]
cmp edx, eax
je 0x14002241c
mov edx, dword [rcx + rsi*4 + 0x18]
cmp edx, eax
je 0x140022421
mov edx, dword [rcx + rsi*4 + 0x1c]
cmp edx, eax
je 0x140022427
add rsi, 4
cmp rsi, 0x80
jne 0x140021f30
jmp 0x14002242d
lea rdx, str.A_sub_program_declaration_looks_like_the_following:_n_sub_program_name:___parameters____return_value_____body____n_sub_program_name:___parameters____return_value___import__nsub_program_name:___parameters____return_value__
mov rcx, rdi
vzeroupper
call fcn.140011a10
xor eax, eax
jmp 0x14002247e
xor esi, esi
vzeroupper
call qword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
lea rcx, [0x1400c67c0]
nop dword [rax]
mov edx, dword [rcx + rsi*4 + 0x10]
cmp edx, eax
je 0x14002237a
mov edx, dword [rcx + rsi*4 + 0x14]
cmp edx, eax
je 0x14002235a
mov edx, dword [rcx + rsi*4 + 0x18]
cmp edx, eax
je 0x140022370
mov edx, dword [rcx + rsi*4 + 0x1c]
cmp edx, eax
je 0x140022376
add rsi, 4
cmp rsi, 0x80
jne 0x140021fa0
jmp 0x14002237c
mov rdi, r15
jmp 0x140022045
mov rbx, qword [r15 + 0x10]
xor esi, esi
vzeroupper
call qword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
lea rcx, [0x1400c67c0]
nop dword [rax]
mov edx, dword [rcx + rsi*4 + 0x10]
cmp edx, eax
je 0x1400223d4
mov edx, dword [rcx + rsi*4 + 0x14]
cmp edx, eax
je 0x1400223c5
mov edx, dword [rcx + rsi*4 + 0x18]
cmp edx, eax
je 0x1400223ca
mov edx, dword [rcx + rsi*4 + 0x1c]
cmp edx, eax
je 0x1400223d0
add rsi, 4
cmp rsi, 0x80
jne 0x140022000
jmp 0x1400223d6
mov rdi, rbx
shr r14b, 1
mov r15, qword [rsp + 0x48]
lea r13, [r15 + 0x18]
add r12, 0xf8
nop dword [rax + rax]
mov rdx, qword [r15]
cmp rdx, rbp
je 0x140022177
cmp rdx, rbx
je 0x1400220b0
mov r15, rdx
jmp 0x140022088
mov r15, qword [r15]
cmp r15, rbx
je 0x1400220b0
mov rax, qword [r15 + 0x50]
test eax, 0x220
jne 0x1400220b3
test al, 0xa8
jne 0x1400220b0
test al, 0x54
je 0x140022080
mov r15, qword [r15 + 0x40]
jmp 0x140022080
xor r15d, r15d
cmp rdx, r15
je 0x1400221a2
mov rcx, rsi
mov r8, r15
vzeroupper
call fcn.140041530
test rax, rax
je 0x14002226e
mov rax, qword [rax + 0x58]
and eax, 0x400000
or rax, qword [rsi + 0x58]
mov qword [rsi + 0x58], rax
cmp r15, rbp
jne 0x140022060
test eax, 0x400000
jne 0x140022186
mov rcx, qword [rsp + 0x50]
mov edx, dword [rcx + 0xf0]
test edx, edx
je 0x1400221bf
mov rax, qword [r12]
add rax, 0x10
xor r10d, r10d
jmp 0x140022132
inc r10
mov rax, qword [rax]
mov r8d, edx
cmp r10, r8
jae 0x1400221bf
test byte [rax + 0x58], 2
jne 0x140022120
mov rdx, qword [rax + 0x18]
mov r8d, dword [rdx + 0x40]
mov r9d, dword [rsi + 0x48]
cmp r9d, r8d
cmova r8d, r9d
mov r9d, dword [rsi + 0x44]
mov dword [rsi + 0x48], r8d
mov r8d, dword [rdx + 0x40]
add r9d, r8d
dec r9d
neg r8d
and r8d, r9d
mov dword [rax + 0x38], r8d
add r8d, dword [rdx + 0x3c]
mov dword [rsi + 0x44], r8d
mov edx, dword [rcx + 0xf0]
jmp 0x140022120
mov rax, qword [rsi + 0x58]
test eax, 0x400000
je 0x1400220f8
test r14b, 1
mov rcx, qword [rsp + 0x50]
jne 0x1400221b4
lea rdx, str.This_sub_program_cannot_be_polymorphic.
mov rcx, qword [rsp + 0x48]
jmp 0x140021f7c
lea rax, str.Expected_a_parameter.
mov rcx, rdx
mov rdx, rax
jmp 0x140021f7c
bt rax, 0x22
jb 0x14002235f
test byte [rdi + 0x51], 4
jne 0x1400221d2
mov rbx, rdi
mov rdi, qword [rsp + 0x48]
jmp 0x1400222c9
mov r8, qword [rdi]
test r14b, 1
jne 0x140022275
mov rdi, qword [rsp + 0x48]
test byte [rsi + 0x5a], 0x40
jne 0x1400222bb
mov qword [rsp + 0x58], 0
vxorps xmm0, xmm0, xmm0
vmovups xmmword [rsp + 0x30], xmm0
lea rax, [rsp + 0x58]
mov qword [rsp + 0x20], rax
mov byte [rsp + 0x28], 2
lea rdx, [rsp + 0x60]
mov r9, rbx
vzeroupper
call fcn.1400212a0
test al, al
je 0x14002226e
mov rax, qword [rsp + 0x60]
mov ecx, dword [rax + 0x40]
mov edx, dword [rsi + 0x44]
mov r8d, dword [rsi + 0x48]
cmp r8d, ecx
cmova ecx, r8d
mov dword [rsi + 0x48], ecx
mov qword [rsi + 0x90], rax
mov ecx, dword [rax + 0x40]
add edx, ecx
dec edx
neg ecx
and ecx, edx
mov dword [rsi + 0x78], ecx
add ecx, dword [rax + 0x3c]
mov dword [rsi + 0x44], ecx
mov rcx, qword [rsp + 0x58]
cmp rcx, rbx
je 0x1400222c9
lea rdx, str.This_is_unexpected.
call fcn.140011a10
xor eax, eax
jmp 0x14002247e
cmp r8, rbx
mov rdi, qword [rsp + 0x48]
je 0x1400222af
mov rax, r8
jmp 0x14002228c
mov rax, qword [rax]
cmp rax, rbx
je 0x1400222af
mov rdx, qword [rax + 0x50]
test dl, 3
je 0x14002229f
test byte [rax + 0x43], 2
jne 0x140022492
test dl, 0xa8
jne 0x1400222af
test dl, 0x54
je 0x140022284
mov rax, qword [rax + 0x40]
jmp 0x140022284
xor ebx, ebx
test byte [rsi + 0x5a], 0x40
je 0x1400221ee
mov qword [rsi + 0x170], r8
mov qword [rsi + 0x178], rbx
mov rax, qword [rsi + 0x58]
test eax, 0x440000
jne 0x1400222f9
mov rcx, qword [rsi + 0x90]
test rcx, rcx
je 0x1400222f9
cmp byte [rcx + 0x54], 0
jne 0x1400222ef
test dword [rcx + 0x58], 0x33808
je 0x1400222f9
or rax, 0x40000000
mov qword [rsi + 0x58], rax
test al, 2
je 0x140022348
mov byte [rsi + 0x130], 2
mov rax, qword [rdi + 8]
mov rcx, qword [rbx + 8]
sub rcx, rax
vmovups xmm0, xmmword [r13]
mov rdx, qword [r13 + 0x10]
mov qword [rsi + 0x118], rdx
vmovups xmmword [rsi + 0x108], xmm0
mov qword [rsi + 0x120], rax
mov qword [rsi + 0x128], rcx
mov qword [rsi + 0xb8], 0x2000000
mov qword [rsi + 0x100], rsi
mov rax, qword [rsp + 0xd0]
mov qword [rax], rbx
mov al, 1
jmp 0x14002247e
inc rsi
jmp 0x14002237a
lea rdx, str.For_now_polymorphic_sub_programs_cannot_be_marked_as_c_call.
mov rcx, qword [rsp + 0x48]
jmp 0x140021f7c
add rsi, 2
jmp 0x14002237a
add rsi, 3
mov edi, esi
shl rdi, 4
mov rax, qword [rdi + rcx + 0x218]
mov rsi, qword [rdi + rcx + 0x210]
add rsi, rax
add rax, r13
inc rax
mov qword [rdi + rcx + 0x218], rax
mov rdx, qword [r15 + 8]
mov r8, qword [r15 + 0x10]
mov rcx, rsi
call fcn.140091e40
mov rax, qword [r15 + 0x10]
mov byte [rax + rsi], 0
lea rdx, str.Directive__s_is_unknown_or_not_supported_here.
jmp 0x140022471
inc rsi
jmp 0x1400223d4
add rsi, 2
jmp 0x1400223d4
add rsi, 3
mov edi, esi
shl rdi, 4
mov rax, qword [rdi + rcx + 0x218]
mov rsi, qword [rdi + rcx + 0x210]
add rsi, rax
add rax, rbx
inc rax
mov qword [rdi + rcx + 0x218], rax
mov rdx, qword [r15 + 8]
mov r8, qword [r15 + 0x10]
mov rcx, rsi
call fcn.140091e40
mov rax, qword [r15 + 0x10]
mov byte [rax + rsi], 0
lea rdx, str.Expected_a_directive_or_a_return_value_but_got__s_instead.
jmp 0x140022471
inc rsi
jmp 0x14002242b
add rsi, 2
jmp 0x14002242b
add rsi, 3
mov edi, esi
shl rdi, 4
mov rax, qword [rdi + rcx + 0x218]
mov rsi, qword [rdi + rcx + 0x210]
add rsi, rax
add rax, rbx
inc rax
mov qword [rdi + rcx + 0x218], rax
mov rdx, qword [r15 + 8]
mov r8, qword [r15 + 0x10]
mov rcx, rsi
call fcn.140091e40
mov rax, qword [r15 + 0x10]
mov byte [rax + rsi], 0
lea rdx, str.You_cannot_use__s_on_a_foreign_sub_program.
mov rcx, r15
mov r8, rsi
call fcn.140011a10
xor eax, eax
add rsp, 0x68
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
vzeroupper
ret
mov rbx, rax
test byte [rsi + 0x5a], 0x40
je 0x1400221ee
jmp 0x1400222bb