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

Disassembly:
push rbx
push rbp
push rsi
sub rsp, 0x130
mov rax, qword [0x1801f5f20]
xor rax, rsp
mov qword [rsp + 0x110], rax
mov rax, qword [rcx]
mov r10, rcx
mov qword [rsp + 0x68], rcx
mov rsi, r8
mov word [rsp + 0x32], r9w
mov r8, rdx
mov qword [rsp + 0x70], rdx
mov rax, qword [rax]
mov rbx, qword [r10 + 0x10]
mov qword [rsp + 0x80], rax
mov rcx, qword [rax]
mov qword [rsp + 0x78], rcx
xor ecx, ecx
mov ebp, ecx
mov dword [rsp + 0x50], ecx
mov qword [rsp + 0x48], rcx
mov qword [rsp + 0x58], rcx
cmp dword [rax + 0x30], ecx
je 0x1800d35cf
mov eax, dword [rax + 0x18]
jmp 0x1800d3d6e
movzx ecx, word [rbx + 0x1a]
mov edx, reloc.OLEAUT32.dll_SafeArrayGetElement
mov eax, dword [rbx + 0x38]
test al, 0x20
movzx r11d, word [rbx + 0x3c]
mov r8d, dword [r8 + 0x44]
mov word [rsp + 0x3a], cx
movzx ecx, word [rbx + 0x1c]
mov word [rsp + 0x3c], cx
movzx ecx, word [rbx + 0x3e]
mov word [rsp + 0x40], cx
mov rcx, qword [rbx]
mov qword [rsp + 0x88], rcx
movzx ecx, word [rbx + 0x16]
mov dword [rsp + 0x64], eax
mov eax, 0x1bf
cmove edx, eax
mov word [rsp + 0x36], cx
movzx eax, word [rbx + 0x18]
mov ecx, edx
and ecx, 0xffffffc3
mov word [rsp + 0x30], ax
mov r9d, eax
mov qword [rsp + 0x28], rsi
mov eax, dword [rsi + 0x64]
and al, 4
mov qword [rsp + 0x128], rdi
mov word [rsp + 0x3e], r11w
cmove ecx, edx
mov rdx, qword [r10 + 8]
mov dword [rsp + 0x20], ecx
lea rcx, [rsp + 0xa0]
call fcn.1800d08c0
xor edx, edx
mov rdi, rax
mov word [rbx + 0x12], dx
mov rcx, qword [rsi + 0x10]
movzx eax, word [rcx]
mov word [rsp + 0x60], ax
cmp ax, 0xa
jg 0x1800d3685
mov word [rsp + 0x38], dx
mov ecx, 0x100
jmp 0x1800d36a2
movsx rcx, ax
call fcn.18003f0d0
sub ax, 0x21
mov ecx, 0x100
mov word [rsp + 0x38], ax
xor edx, edx
jmp 0x1800d36a2
xor edx, edx
test rdi, rdi
je 0x1800d3c29
movzx r9d, word [rdi + 0x14]
mov ebp, edx
mov word [rsp + 0x34], r9w
cmp r9w, cx
je 0x1800d36c8
test byte [rdi + 0x12], 0x80
je 0x1800d3787
movzx r10d, word [rsp + 0x30]
mov rax, qword [rsi + 8]
movsx r8, word [rax + r10*2]
test r8d, r8d
js 0x1800d3778
mov rdx, qword [rsi + 0x18]
lea rcx, [r8 + r8*2]
mov rax, qword [rdx + 8]
mov edx, dword [rax + rcx*8 + 8]
and edx, 0xf
jne 0x1800d3c02
mov ecx, 0x100
mov rax, qword [rdi + 0x28]
test qword [rbx + 8], rax
jne 0x1800d3c02
test word [rdi + 0x12], cx
je 0x1800d371d
cmp r9w, 0x10
je 0x1800d3c02
mov r11, qword [rsp + 0x70]
movzx edx, byte [r11 + 0x3c]
test dl, 0x58
je 0x1800d3759
mov rcx, qword [rdi]
mov r8d, dword [rcx + 4]
test r8b, 3
je 0x1800d3c02
mov eax, dword [r11 + 0x44]
cmp dword [rcx + 0x34], eax
jne 0x1800d3c02
test dl, 0x18
je 0x1800d3759
test r8b, 2
jne 0x1800d3c02
cmp byte [rsi + 0x62], 0
je 0x1800d3792
movzx eax, word [rsi + 0x5e]
dec eax
movzx ecx, r10w
cmp ecx, eax
jne 0x1800d3792
mov rax, qword [rsp + 0x68]
or byte [rax + 0x20], 2
jmp 0x1800d379b
cmp r8d, 0xffffffff
je 0x1800d3c02
jmp 0x1800d36f9
movzx r10d, word [rsp + 0x30]
jmp 0x1800d36fe
mov rax, qword [rsp + 0x68]
or byte [rax + 0x20], 1
mov eax, dword [rsp + 0x64]
mov dword [rbx + 0x38], eax
movzx eax, word [rsp + 0x3a]
mov word [rbx + 0x1a], ax
movzx eax, word [rsp + 0x3c]
mov word [rbx + 0x1c], ax
movzx eax, word [rsp + 0x3e]
mov word [rbx + 0x18], r10w
mov word [rbx + 0x3c], ax
cmp ax, word [rbx + 0x40]
jb 0x1800d37f5
mov rcx, qword [rsp + 0x78]
mov rdx, rbx
movzx r8d, ax
inc r8d
call fcn.1800d29d0
test eax, eax
jne 0x1800d3c25
movzx r9d, word [rsp + 0x34]
movzx r10d, word [rsp + 0x30]
mov r11, qword [rsp + 0x70]
movzx ecx, word [rbx + 0x3c]
mov rax, qword [rbx + 0x48]
mov qword [rax + rcx*8], rdi
inc word [rbx + 0x3c]
mov rcx, qword [rdi + 0x28]
or rcx, qword [rsp + 0x88]
mov rax, qword [rbx + 8]
not rax
and rcx, rax
mov qword [rbx], rcx
test r9b, 1
je 0x1800d3929
mov r8, qword [rdi]
test dword [r8 + 4], 0x1000
je 0x1800d3871
movzx eax, word [rbx + 0x3c]
mov ebp, 0x2e
dec eax
test eax, eax
jle 0x1800d3889
mov rcx, qword [rbx + 0x48]
xor r9d, r9d
mov edx, eax
nop dword [rax]
mov rax, qword [rcx]
test rax, rax
je 0x1800d385f
cmp qword [rax], r8
cmove ebp, r9d
add rcx, 8
sub rdx, 1
jne 0x1800d3850
movzx r9d, word [rsp + 0x34]
jmp 0x1800d3889
mov rax, qword [r8 + 0x20]
test rax, rax
je 0x1800d3889
movsxd rcx, dword [rax]
test ecx, ecx
je 0x1800d3889
call fcn.18003f0d0
movsx ebp, ax
test byte [rsi + 0x64], 0x80
je 0x1800d38f6
movzx r11d, word [rsp + 0x38]
cmp r11w, 0xa
jl 0x1800d38f6
mov rax, qword [rsi + 0x10]
movzx ecx, r10w
movzx r8d, word [rax + rcx*2]
cmp bp, 0xa
jg 0x1800d38b3
xor eax, eax
jmp 0x1800d38c0
movsx rcx, bp
call fcn.18003f0d0
sub ax, 0x21
sub ax, bp
sub ax, r11w
add ax, r8w
add ax, 0xa
jns 0x1800d38f6
cmp word [rsp + 0x32], 2
jge 0x1800d3c02
mov rax, qword [rsp + 0x78]
test dword [rax + 0x60], 0x20000
jne 0x1800d3c02
or dword [rbx + 0x38], 0x100000
or dword [rbx + 0x38], 4
mov rcx, qword [rsp + 0x58]
mov rax, qword [rsp + 0x48]
mov r10d, 0x100
test byte [rbx + 0x38], 2
je 0x1800d3aa1
mov r9, rax
mov qword [rsp + 0x20], rbx
mov r8, rcx
call fcn.1800d27f0
jmp 0x1800d3afb
test r9b, 0x82
je 0x1800d39a2
mov rax, qword [rsi + 8]
movzx ecx, r10w
movsx edx, word [rax + rcx*2]
or dword [rbx + 0x38], 1
mov ecx, dword [rbx + 0x38]
cmp edx, 0xffffffff
je 0x1800d3981
test edx, edx
js 0x1800d3988
cmp word [rsp + 0x32], 0
jne 0x1800d3988
movzx edx, word [rsi + 0x5e]
movzx r8d, r10w
lea eax, [rdx - 1]
cmp r8d, eax
jne 0x1800d3988
test byte [rsi + 0x64], 8
jne 0x1800d3981
cmp edx, 1
jne 0x1800d397b
cmp byte [rsi + 0x62], 0
je 0x1800d397b
cmp r9w, 2
je 0x1800d3981
bts ecx, 0x10
jmp 0x1800d3985
bts ecx, 0xc
mov dword [rbx + 0x38], ecx
cmp byte [rsp + 0xc9], 1
jbe 0x1800d38fa
or dword [rbx + 0x38], 0x200000
jmp 0x1800d38fa
mov eax, 0x100
test ax, r9w
je 0x1800d39b6
or dword [rbx + 0x38], 8
jmp 0x1800d38fa
mov edx, dword [r11 + 0x44]
mov r8, rsi
mov rcx, qword [rsp + 0x80]
movzx r9d, r10w
mov qword [rsp + 0x20], rdi
call fcn.1800d3330
movzx r9d, word [rsp + 0x34]
mov r10d, 0x100
test r9b, 0x24
je 0x1800d3a60
or dword [rbx + 0x38], 0x22
mov rcx, rdi
mov word [rbx + 0x1a], ax
xor eax, eax
mov qword [rsp + 0x58], rcx
mov qword [rsp + 0x48], rax
test word [rdi + 0x12], r10w
je 0x1800d390a
movzx r8d, word [rbx + 0x3c]
lea rax, [rdi + 0x38]
mov rcx, qword [rsp + 0x78]
inc r8d
mov rdx, rbx
mov qword [rsp + 0x48], rax
call fcn.1800d29d0
test eax, eax
jne 0x1800d3c25
movzx ecx, word [rbx + 0x3c]
mov rax, qword [rbx + 0x48]
mov rdx, qword [rsp + 0x48]
movzx r9d, word [rsp + 0x34]
mov qword [rax + rcx*8], rdx
mov eax, 1
inc word [rbx + 0x3c]
mov rcx, rdi
or dword [rbx + 0x38], 0x10
mov word [rbx + 0x1c], ax
mov rax, rdx
jmp 0x1800d3904
or dword [rbx + 0x38], 0x12
test byte [rbx + 0x38], 0x20
mov word [rbx + 0x1c], ax
mov rax, rdi
mov qword [rsp + 0x48], rax
je 0x1800d3a95
movzx eax, word [rbx + 0x3c]
sub eax, 2
movsxd rcx, eax
mov rax, qword [rbx + 0x48]
mov rcx, qword [rax + rcx*8]
mov rax, rdi
mov qword [rsp + 0x58], rcx
jmp 0x1800d390a
xor ecx, ecx
mov qword [rsp + 0x58], rcx
jmp 0x1800d390a
inc word [rbx + 0x18]
movzx edx, word [rdi + 0x10]
movzx r8d, word [rbx + 0x18]
test dx, dx
jg 0x1800d3acc
movzx ecx, word [rsp + 0x30]
mov rax, qword [rsi + 8]
cmp word [rax + rcx*2], 0
jl 0x1800d3acc
sub dx, bp
add word [rbx + 0x16], dx
jmp 0x1800d3afb
mov rdx, qword [rsi + 0x10]
lea eax, [r8 - 1]
movsxd rcx, eax
movzx r8d, word [rdx + r8*2]
sub r8w, word [rdx + rcx*2]
add r8w, word [rbx + 0x16]
mov word [rbx + 0x16], r8w
test r10w, r9w
je 0x1800d3afb
add r8w, 0xa
mov word [rbx + 0x16], r8w
mov eax, dword [rsi + 0x64]
and eax, 3
cmp al, 3
jne 0x1800d3b0f
movzx eax, word [rbx + 0x16]
add ax, 0x10
jmp 0x1800d3b2f
mov rcx, qword [rsp + 0x70]
movsx eax, word [rsi + 0x5c]
imul eax, eax, 0xf
mov rcx, qword [rcx + 0x20]
cdq
movsx r8d, word [rcx + 0x3c]
idiv r8d
inc ax
add ax, word [rbx + 0x16]
movzx ecx, word [rsp + 0x38]
movzx edx, ax
call fcn.18003f060
test dword [rbx + 0x38], 0x4000140
mov word [rbx + 0x14], ax
jne 0x1800d3b5d
movzx edx, word [rbx + 0x16]
movzx ecx, ax
add dx, 0x10
call fcn.18003f060
mov word [rbx + 0x14], ax
movzx ecx, word [rsp + 0x32]
mov rdx, rbx
movzx edi, word [rbx + 0x16]
movzx r8d, word [rsp + 0x60]
lea eax, [rcx + rbp]
add word [rbx + 0x14], ax
lea eax, [rcx + rbp]
add word [rbx + 0x16], ax
mov rcx, qword [rsp + 0x68]
mov rcx, qword [rcx + 8]
call fcn.1800d3120
mov rcx, qword [rsp + 0x68]
mov rdx, rbx
call fcn.1800d2fc0
mov ecx, dword [rbx + 0x38]
test cl, 2
mov dword [rsp + 0x50], eax
cmovne di, word [rsp + 0x36]
mov word [rbx + 0x16], di
test cl, 0x10
jne 0x1800d3bf9
movzx ecx, word [rbx + 0x18]
cmp cx, word [rsi + 0x60]
jae 0x1800d3bf9
cmp cx, word [rsi + 0x5e]
jb 0x1800d3bca
mov eax, dword [rsi + 0x64]
and al, 3
cmp al, 2
je 0x1800d3bf9
cmp cx, 3
jbe 0x1800d3bdd
mov rcx, qword [rsp + 0x80]
call fcn.18003c8e0
movzx r9d, word [rsp + 0x32]
mov r8, rsi
mov rdx, qword [rsp + 0x70]
add r9w, bp
mov rcx, qword [rsp + 0x68]
call fcn.1800d3560
movzx ecx, word [rsp + 0x36]
mov word [rbx + 0x16], cx
lea rcx, [rsp + 0xa0]
call fcn.1800d0510
mov ebp, dword [rsp + 0x50]
mov rdi, rax
mov ecx, 0x100
test ebp, ebp
je 0x1800d36a0
jmp 0x1800d3c29
mov ebp, dword [rsp + 0x50]
mov rax, qword [rsp + 0x88]
movzx edi, word [rsp + 0x30]
movzx ecx, word [rsp + 0x40]
movzx r11d, word [rsp + 0x3e]
mov qword [rbx], rax
movzx eax, word [rsp + 0x3a]
mov word [rbx + 0x1a], ax
movzx eax, word [rsp + 0x3c]
mov word [rbx + 0x1c], ax
mov eax, dword [rsp + 0x64]
mov dword [rbx + 0x38], eax
movzx eax, word [rsp + 0x36]
mov word [rbx + 0x16], ax
mov word [rbx + 0x18], di
mov word [rbx + 0x3e], cx
mov word [rbx + 0x3c], r11w
cmp di, cx
jne 0x1800d3d64
movzx ecx, word [rsi + 0x5e]
movzx eax, di
inc eax
cmp eax, ecx
jae 0x1800d3d64
cmp di, r11w
jne 0x1800d3d64
mov eax, dword [rsi + 0x64]
test al, 0x40
jne 0x1800d3d64
test al, al
jns 0x1800d3d64
mov r9, qword [rsp + 0x78]
test dword [r9 + 0x60], 0x4000
jne 0x1800d3d64
mov rax, qword [rsi + 0x10]
movzx ecx, di
cmp word [rax + rcx*2 + 2], 0x2a
jl 0x1800d3d64
movzx r8d, r11w
mov rdx, rbx
inc r8d
mov rcx, r9
call fcn.1800d29d0
mov ebp, eax
test eax, eax
jne 0x1800d3d64
inc word [rbx + 0x18]
mov r8, rsi
inc word [rbx + 0x3e]
movzx ecx, word [rbx + 0x3c]
mov rax, qword [rbx + 0x48]
mov rdx, qword [rsp + 0x70]
movzx r9d, di
mov qword [rax + rcx*8], 0
inc word [rbx + 0x3c]
or dword [rbx + 0x38], 0x8000
mov r10, qword [rsi + 0x10]
mov rcx, qword [rsp + 0x68]
movzx eax, di
movzx r11d, word [r10 + r9*2]
movzx r9d, word [rsp + 0x32]
sub r11w, word [r10 + rax*2 + 2]
add r9w, 5
sub word [rbx + 0x16], r11w
add r9w, r11w
call fcn.1800d3560
movzx eax, word [rsp + 0x36]
movzx ecx, word [rsp + 0x40]
mov word [rbx + 0x16], ax
mov eax, dword [rsp + 0x64]
mov dword [rbx + 0x38], eax
mov word [rbx + 0x18], di
mov word [rbx + 0x3e], cx
mov rdi, qword [rsp + 0x128]
mov eax, ebp
mov rcx, qword [rsp + 0x110]
xor rcx, rsp
call fcn.180131f30
add rsp, 0x130
pop rsi
pop rbp
pop rbx
ret