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

Disassembly:
push rbx
push rbp
push rsi
push rdi
sub rsp, 0x128
mov rax, qword [0x1803fc9f0]
xor rax, rsp
mov qword [rsp + 0x110], rax
mov rax, qword [rcx]
xor esi, esi
mov rbx, qword [rcx + 0x18]
mov rdi, r8
mov qword [rsp + 0x88], r8
mov r10, rcx
mov word [rsp + 0x34], r9w
mov r8, rdx
mov rax, qword [rax]
mov ebp, esi
mov qword [rsp + 0x80], rax
mov qword [rsp + 0x70], rdx
mov qword [rsp + 0x60], rcx
mov rax, qword [rax]
mov qword [rsp + 0x90], rax
mov qword [rsp + 0x40], rsi
mov qword [rsp + 0x50], rsi
cmp byte [rax + 0x61], sil
je 0x18028afc8
lea eax, [rsi + 7]
jmp 0x18028b739
movzx ecx, word [rbx + 0x1a]
mov edx, reloc.OLEAUT32.dll_SafeArrayGetElement
mov eax, dword [rbx + 0x28]
test al, 0x20
movzx r11d, word [rbx + 0x2c]
mov r8d, dword [r8 + 0x44]
mov word [rsp + 0x48], cx
movzx ecx, word [rbx + 0x1c]
mov word [rsp + 0x4a], cx
movzx ecx, word [rbx + 0x2e]
mov word [rsp + 0x4e], cx
mov rcx, qword [rbx]
mov qword [rsp + 0x98], rcx
movzx ecx, word [rbx + 0x16]
mov dword [rsp + 0x6c], 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 dword [rsp + 0x78], eax
mov eax, dword [rdi + 0x64]
and al, 4
mov qword [rsp + 0x28], rdi
mov word [rsp + 0x4c], r11w
cmove ecx, edx
mov rdx, qword [r10 + 8]
mov dword [rsp + 0x20], ecx
lea rcx, [rsp + 0xa0]
call fcn.18028e840
mov r8, rax
mov qword [rsp + 0x58], rax
mov word [rbx + 0x12], si
mov rax, qword [rdi + 0x10]
movzx eax, word [rax]
mov word [rsp + 0x68], ax
cmp ax, 0xa
jg 0x18028b07d
mov word [rsp + 0x38], si
mov ecx, 0x100
jmp 0x18028b0a2
movsx rcx, ax
call fcn.180250bd0
sub ax, 0x21
mov ecx, 0x100
mov word [rsp + 0x38], ax
jmp 0x18028b0a2
xor esi, esi
test r8, r8
je 0x18028b5f3
movzx r9d, word [r8 + 0x14]
mov word [rsp + 0x32], r9w
cmp r9w, cx
jne 0x18028b156
movzx r10d, word [rsp + 0x30]
mov rax, qword [rdi + 8]
movsx rdx, word [rax + r10*2]
test edx, edx
js 0x18028b14b
mov rax, qword [rdi + 0x18]
mov rcx, rdx
shl rcx, 5
mov rax, qword [rax + 8]
movzx ecx, byte [rax + rcx + 0x18]
test ecx, ecx
jne 0x18028b5d1
mov ecx, 0x100
mov rax, qword [rbx + 8]
test qword [r8 + 0x28], rax
jne 0x18028b5d1
test word [r8 + 0x12], cx
je 0x18028b114
cmp r9w, 0x10
je 0x18028b5d1
mov rax, qword [rsp + 0x70]
test byte [rax + 0x3c], 8
je 0x18028b12c
mov rax, qword [r8]
test byte [rax + 4], 1
je 0x18028b5d1
cmp byte [rdi + 0x62], 0
je 0x18028b15e
movzx eax, word [rdi + 0x5e]
dec eax
movzx ecx, r10w
cmp ecx, eax
jne 0x18028b15e
mov rax, qword [rsp + 0x60]
or byte [rax + 0x28], 2
jmp 0x18028b167
cmp edx, 0xffffffff
je 0x18028b5d1
jmp 0x18028b0ef
movzx r10d, word [rsp + 0x30]
jmp 0x18028b0f4
mov rax, qword [rsp + 0x60]
or byte [rax + 0x28], 1
mov eax, dword [rsp + 0x6c]
mov rdx, rbx
mov rcx, qword [rsp + 0x90]
mov dword [rbx + 0x28], eax
movzx eax, word [rsp + 0x48]
mov word [rbx + 0x1a], ax
movzx eax, word [rsp + 0x4a]
mov word [rbx + 0x1c], ax
movzx eax, word [rsp + 0x4c]
mov word [rbx + 0x18], r10w
mov word [rbx + 0x2c], ax
lea r8d, [rax + 1]
call fcn.18028cce0
test eax, eax
jne 0x18028b5f3
movzx ecx, word [rbx + 0x2c]
mov rax, qword [rbx + 0x38]
mov rdx, qword [rsp + 0x58]
movzx r9d, word [rsp + 0x32]
mov qword [rax + rcx*8], rdx
inc word [rbx + 0x2c]
mov rcx, qword [rsp + 0x98]
or rcx, qword [rdx + 0x28]
mov rax, qword [rbx + 8]
not rax
and rcx, rax
mov qword [rbx], rcx
test r9b, 1
je 0x18028b2bd
mov r8, qword [rdx]
test dword [r8 + 4], 0x800
je 0x18028b232
movzx ecx, word [rbx + 0x2c]
mov esi, 0x2e
dec ecx
test ecx, ecx
jle 0x18028b24a
mov rax, qword [rbx + 0x38]
xor edi, edi
mov edx, ecx
nop dword [rax]
mov rcx, qword [rax]
test rcx, rcx
je 0x18028b21e
cmp qword [rcx], r8
cmove esi, edi
add rax, 8
sub rdx, 1
jne 0x18028b210
mov rdi, qword [rsp + 0x88]
jmp 0x18028b24a
mov rax, qword [r8 + 0x20]
test rax, rax
je 0x18028b24a
movsxd rcx, dword [rax]
test ecx, ecx
je 0x18028b24a
call fcn.180250bd0
movsx esi, ax
test byte [rdi + 0x64], 0x80
je 0x18028b29f
movzx r10d, word [rsp + 0x38]
cmp r10w, 0xa
jl 0x18028b29f
movzx ecx, word [rsp + 0x30]
mov rax, qword [rdi + 0x10]
movzx r8d, word [rax + rcx*2]
cmp si, 0xa
jg 0x18028b275
xor eax, eax
jmp 0x18028b282
movsx rcx, si
call fcn.180250bd0
sub ax, 0x21
movsx ecx, ax
movsx edx, r8w
add edx, 0xa
movsx eax, r10w
add edx, ecx
add eax, esi
cmp edx, eax
jge 0x18028b29f
or dword [rbx + 0x28], 0x100000
or dword [rbx + 0x28], 4
mov r11d, 0x100
mov rdx, qword [rsp + 0x58]
mov rax, qword [rsp + 0x40]
mov rcx, qword [rsp + 0x50]
jmp 0x18028b411
test r9b, 0x82
je 0x18028b339
mov rax, qword [rdi + 8]
movzx r10d, word [rsp + 0x30]
movsx edx, word [rax + r10*2]
or dword [rbx + 0x28], 1
mov ecx, dword [rbx + 0x28]
cmp edx, 0xffffffff
je 0x18028b318
test edx, edx
js 0x18028b31f
cmp word [rsp + 0x34], 0
jne 0x18028b31f
movzx edx, word [rdi + 0x5e]
movzx r8d, r10w
lea eax, [rdx - 1]
cmp r8d, eax
jne 0x18028b31f
test byte [rdi + 0x64], 8
jne 0x18028b318
cmp edx, 1
jne 0x18028b312
cmp byte [rdi + 0x62], 0
je 0x18028b312
cmp r9w, 2
je 0x18028b318
bts ecx, 0x10
jmp 0x18028b31c
bts ecx, 0xc
mov dword [rbx + 0x28], ecx
mov rdx, qword [rsp + 0x58]
mov r11d, 0x100
mov rax, qword [rsp + 0x40]
mov rcx, qword [rsp + 0x50]
jmp 0x18028b417
mov r11d, 0x100
test r11w, r9w
je 0x18028b358
or dword [rbx + 0x28], 8
mov rax, qword [rsp + 0x40]
mov rcx, qword [rsp + 0x50]
jmp 0x18028b411
mov rax, qword [rsp + 0x70]
test r9b, 0x24
mov r9d, dword [rsp + 0x78]
mov r8, rdi
mov rcx, qword [rsp + 0x80]
mov qword [rsp + 0x20], rdx
je 0x18028b446
or dword [rbx + 0x28], 0x22
mov edx, dword [rax + 0x44]
call fcn.18028e5e0
mov rdx, qword [rsp + 0x58]
mov r11d, 0x100
mov word [rbx + 0x1a], ax
mov rcx, rdx
xor eax, eax
mov qword [rsp + 0x50], rdx
mov qword [rsp + 0x40], rax
test word [rdx + 0x12], r11w
je 0x18028b40b
movzx r8d, word [rbx + 0x2c]
lea rax, [rdx + 0x38]
mov rcx, qword [rsp + 0x90]
inc r8d
mov rdx, rbx
mov qword [rsp + 0x40], rax
call fcn.18028cce0
test eax, eax
jne 0x18028b5f3
movzx ecx, word [rbx + 0x2c]
mov r11d, 0x100
mov rax, qword [rbx + 0x38]
mov rdx, qword [rsp + 0x40]
mov qword [rax + rcx*8], rdx
mov eax, 1
inc word [rbx + 0x2c]
mov rdx, qword [rsp + 0x58]
or dword [rbx + 0x28], 0x10
mov rcx, rdx
mov word [rbx + 0x1c], ax
mov rax, qword [rsp + 0x40]
movzx r9d, word [rsp + 0x32]
movzx r10d, word [rsp + 0x30]
test byte [rbx + 0x28], 2
je 0x18028b4a3
mov rbp, qword [rsp + 0x60]
mov r8, rcx
mov rcx, qword [rsp + 0x80]
mov rdx, rbp
mov r9, rax
mov qword [rsp + 0x20], rbx
call fcn.18028e550
jmp 0x18028b501
or dword [rbx + 0x28], 0x12
mov edx, dword [rax + 0x44]
call fcn.18028e5e0
test byte [rbx + 0x28], 0x20
mov r11d, 0x100
mov rdx, qword [rsp + 0x58]
movzx r9d, word [rsp + 0x32]
movzx r10d, word [rsp + 0x30]
mov word [rbx + 0x1c], ax
mov rax, rdx
mov qword [rsp + 0x40], rdx
je 0x18028b497
movzx eax, word [rbx + 0x2c]
sub eax, 2
movsxd rcx, eax
mov rax, qword [rbx + 0x38]
mov rcx, qword [rax + rcx*8]
mov rax, rdx
mov qword [rsp + 0x50], rcx
jmp 0x18028b417
xor ecx, ecx
mov qword [rsp + 0x50], rcx
jmp 0x18028b417
inc word [rbx + 0x18]
movzx edx, word [rdx + 0x10]
movzx r8d, word [rbx + 0x18]
test dx, dx
jg 0x18028b4cd
mov rax, qword [rdi + 8]
movzx ecx, r10w
cmp word [rax + rcx*2], 0
jl 0x18028b4cd
sub dx, si
add word [rbx + 0x16], dx
jmp 0x18028b4fc
mov rdx, qword [rdi + 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 r11w, r9w
je 0x18028b4fc
add r8w, 0xa
mov word [rbx + 0x16], r8w
mov rbp, qword [rsp + 0x60]
movsx eax, word [rdi + 0x5c]
mov rcx, qword [rsp + 0x70]
imul eax, eax, 0xf
mov rcx, qword [rcx + 0x20]
cdq
movsx r8d, word [rcx + 0x4c]
movzx ecx, word [rsp + 0x38]
idiv r8d
add ax, word [rbx + 0x16]
lea edx, [rax + 1]
call fcn.180250c60
test dword [rbx + 0x28], 0x140
mov word [rbx + 0x14], ax
jne 0x18028b54c
movzx edx, word [rbx + 0x16]
movzx ecx, ax
add dx, 0x10
call fcn.180250c60
mov word [rbx + 0x14], ax
movzx ecx, word [rsp + 0x34]
mov rdx, rbx
movzx edi, word [rbx + 0x16]
movzx r8d, word [rsp + 0x68]
lea eax, [rsi + rcx]
add word [rbx + 0x14], ax
lea eax, [rsi + rcx]
add word [rbx + 0x16], ax
mov rcx, qword [rbp + 8]
call fcn.18028cb20
mov rdx, rbx
mov rcx, rbp
call fcn.18028c9c0
mov ecx, dword [rbx + 0x28]
mov ebp, eax
movzx eax, word [rsp + 0x36]
test cl, 2
cmovne di, ax
mov word [rbx + 0x16], di
mov rdi, qword [rsp + 0x88]
test cl, 0x10
jne 0x18028b5cd
movzx ecx, word [rdi + 0x60]
cmp word [rbx + 0x18], cx
jae 0x18028b5cd
movzx r9d, word [rsp + 0x34]
mov r8, rdi
mov rdx, qword [rsp + 0x70]
add r9w, si
mov rcx, qword [rsp + 0x60]
call fcn.18028af50
movzx eax, word [rsp + 0x36]
mov word [rbx + 0x16], ax
lea rcx, [rsp + 0xa0]
call fcn.18028e950
mov qword [rsp + 0x58], rax
mov r8, rax
mov ecx, 0x100
test ebp, ebp
je 0x18028b0a0
mov rax, qword [rsp + 0x98]
movzx esi, word [rsp + 0x30]
movzx ecx, word [rsp + 0x4e]
movzx r11d, word [rsp + 0x4c]
mov qword [rbx], rax
movzx eax, word [rsp + 0x48]
mov word [rbx + 0x1a], ax
movzx eax, word [rsp + 0x4a]
mov word [rbx + 0x1c], ax
mov eax, dword [rsp + 0x6c]
mov dword [rbx + 0x28], eax
movzx eax, word [rsp + 0x36]
mov word [rbx + 0x16], ax
mov word [rbx + 0x18], si
mov word [rbx + 0x2e], cx
mov word [rbx + 0x2c], r11w
cmp si, cx
jne 0x18028b737
movzx ecx, word [rdi + 0x5e]
movzx eax, si
inc eax
cmp eax, ecx
jae 0x18028b737
cmp si, r11w
jne 0x18028b737
mov eax, dword [rdi + 0x64]
test al, 0x40
jne 0x18028b737
test al, al
jns 0x18028b737
mov r9, qword [rsp + 0x90]
mov eax, 0x4000
test word [r9 + 0x5c], ax
jne 0x18028b737
mov rax, qword [rdi + 0x10]
movzx ecx, si
cmp word [rax + rcx*2 + 2], 0x2a
jl 0x18028b737
movzx r8d, r11w
mov rdx, rbx
inc r8d
mov rcx, r9
call fcn.18028cce0
mov ebp, eax
test eax, eax
jne 0x18028b737
inc word [rbx + 0x18]
mov r8, rdi
inc word [rbx + 0x2e]
movzx ecx, word [rbx + 0x2c]
mov rax, qword [rbx + 0x38]
mov rdx, qword [rsp + 0x70]
movzx r9d, si
mov qword [rax + rcx*8], 0
inc word [rbx + 0x2c]
or dword [rbx + 0x28], 0x8000
mov r10, qword [rdi + 0x10]
mov rcx, qword [rsp + 0x60]
movzx eax, si
movzx r11d, word [r10 + r9*2]
movzx r9d, word [rsp + 0x34]
sub r11w, word [r10 + rax*2 + 2]
add r9w, 5
sub word [rbx + 0x16], r11w
add r9w, r11w
call fcn.18028af50
movzx eax, word [rsp + 0x36]
movzx ecx, word [rsp + 0x4e]
mov word [rbx + 0x16], ax
mov eax, dword [rsp + 0x6c]
mov dword [rbx + 0x28], eax
mov word [rbx + 0x18], si
mov word [rbx + 0x2e], cx
mov eax, ebp
mov rcx, qword [rsp + 0x110]
xor rcx, rsp
call fcn.1802b85a0
add rsp, 0x128
pop rdi
pop rsi
pop rbp
pop rbx
ret