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

Disassembly:
push rsi
push r14
sub rsp, 0xc8
mov rax, qword [0x180295a70]
xor rax, rsp
mov qword [rsp + 0x98], rax
test r8d, r8d
mov rax, qword [rcx + 0x28]
mov qword [rsp + 0x48], rdx
mov rdx, qword [rsp + 0x100]
mov dword [rsp + 0x28], r8d
mov qword [rsp + 0x58], rcx
mov qword [rdx], rax
mov qword [rsp + 0x70], rdx
jne 0x18012c9cc
xor eax, eax
jmp 0x18012d0f2
mov eax, dword [r9 + 8]
mov rsi, rcx
lea rcx, [rcx + 0x4c]
cmp dword [rcx], eax
mov eax, dword [r9 + 0xc]
mov qword [rsp + 0xf0], rbx
mov qword [rsp + 0xc0], rbp
mov rbp, qword [rsi + 0x20]
lea rdx, [r9 + 8]
cmovl rdx, rcx
cmp dword [rsi + 0x50], eax
mov qword [rsp + 0xb8], rdi
mov qword [rsp + 0xb0], r12
mov r12d, dword [r9]
lea rcx, [rsi + 0x50]
mov qword [rsp + 0xa8], r13
mov r13d, dword [rdx]
lea rdx, [r9 + 0xc]
cmovl rdx, rcx
mov rcx, qword [rsi + 0x38]
mov qword [rsp + 0xa0], r15
mov eax, dword [rdx]
mov r15d, dword [r9 + 4]
lea rdx, [rsp + 0x30]
mov dword [rsp + 0x24], eax
mov dword [rsp + 0x50], r15d
call fcn.180090750
mov r14d, dword [rsp + 0x24]
xor edi, edi
mov rcx, qword [rsi + 0x38]
lea rdx, [rsp + 0x60]
call fcn.180090720
mov rbx, rax
mov rax, qword [rsp + 0x30]
test rax, rax
je 0x18012ca72
cmp rax, qword [rbx]
je 0x18012ca77
call fcn.1801600e0
mov rax, qword [rbx + 8]
cmp qword [rsp + 0x38], rax
je 0x18012cbaa
mov rbx, qword [rsi + 0x40]
mov qword [rdi + rbx], rbp
mov qword [rdi + rbx + 8], rbp
mov rax, qword [rsp + 0x30]
test rax, rax
jne 0x18012caa7
call fcn.1801600e0
mov rax, qword [rsp + 0x30]
mov rcx, qword [rsp + 0x38]
cmp rcx, qword [rax + 8]
jne 0x18012cabc
call fcn.1801600e0
mov rcx, qword [rsp + 0x38]
mov ecx, dword [rcx + 0x3c]
mov r8d, r13d
mov edx, r12d
call fcn.1800da200
mov dword [rdi + rbx + 0x10], eax
mov rcx, qword [rsp + 0x30]
test rcx, rcx
jne 0x18012cae2
call fcn.1801600e0
mov rcx, qword [rsp + 0x30]
mov rax, qword [rsp + 0x38]
cmp rax, qword [rcx + 8]
jne 0x18012caf7
call fcn.1801600e0
mov rax, qword [rsp + 0x38]
mov ecx, dword [rax + 0x40]
mov r8d, r14d
mov edx, r15d
call fcn.1800da200
mov ecx, dword [rdi + rbx + 0x24]
mov dword [rdi + rbx + 0x14], eax
imul ecx, eax
imul ecx, dword [rdi + rbx + 0x10]
cmp qword [rsp + 0x30], 0
movsxd rax, ecx
lea rbp, [rbp + rax*2]
jne 0x18012cb2a
call fcn.1801600e0
mov rcx, qword [rsp + 0x38]
cmp byte [rcx + 0x49], 0
je 0x18012cb43
call fcn.1801600e0
add rdi, 0x28
jmp 0x18012ca52
mov rdx, qword [rcx + 0x10]
cmp byte [rdx + 0x49], 0
jne 0x18012cb7a
mov rax, qword [rdx]
cmp byte [rax + 0x49], 0
jne 0x18012cb6c
nop
nop
nop
mov rdx, rax
mov rax, qword [rax]
cmp byte [rax + 0x49], 0
je 0x18012cb60
mov qword [rsp + 0x38], rdx
add rdi, 0x28
jmp 0x18012ca52
mov rax, qword [rcx + 8]
cmp byte [rax + 0x49], 0
jne 0x18012cb9c
cmp rcx, qword [rax + 0x10]
jne 0x18012cb9c
mov qword [rsp + 0x38], rax
mov rcx, rax
mov rax, qword [rax + 8]
cmp byte [rax + 0x49], 0
je 0x18012cb84
mov qword [rsp + 0x38], rax
add rdi, 0x28
jmp 0x18012ca52
cmp dword [rsi + 0x30], 0
mov r14d, dword [rsp + 0x28]
mov r13, rsi
mov rsi, qword [rsp + 0x48]
mov dword [rsp + 0x40], 0
jle 0x18012cec1
xor ebp, ebp
lea r10, [0x18020c8e0]
mov r12, qword [r13 + 0x40]
cmp dword [r12 + rbp + 0x1c], 1
je 0x18012cc17
mov edi, dword [r12 + rbp + 0x24]
imul edi, dword [r12 + rbp + 0x14]
imul edi, dword [r12 + rbp + 0x10]
add edi, edi
cmp r14d, edi
jl 0x18012ceaa
mov rcx, qword [r12 + rbp]
movsxd rbx, edi
mov rdx, rsi
mov r8, rbx
call fcn.180161690
add rsi, rbx
sub r14d, edi
jmp 0x18012ce89
xor ecx, ecx
cmp dword [r12 + rbp + 0x14], ecx
mov dword [rsp + 0x28], ecx
jle 0x18012ce89
mov r8d, 1
mov dword [rsp + 0x20], r8d
nop
nop
nop
nop
movsxd rdx, dword [r12 + rbp + 0x10]
xor edi, edi
mov eax, edx
mov ebx, edx
imul eax, ecx
test edx, edx
movsxd rcx, eax
mov rax, qword [r12 + rbp]
lea r9, [rax + rcx*2]
mov qword [rsp + 0x60], r9
lea r13, [r9 + rdx*2]
lea r15, [r13 + rdx*2]
lea rax, [r15 + rdx*2]
mov qword [rsp + 0x48], rax
jle 0x18012ce65
nop
nop
cmp r14d, 3
jl 0x18012ceb6
cmp byte [rsi + 2], 0xfc
jne 0x18012cce0
movzx ecx, byte [rsi]
movzx eax, byte [rsi + 1]
shl cx, 8
or cx, ax
bt cx, 0xf
jae 0x18012ccb1
and cx, 0x7fff
mov word [rsp + 0x78], cx
jmp 0x18012ccb9
not cx
mov word [rsp + 0x78], cx
mov eax, 1
nop
mov word [rsp + rax*2 + 0x78], cx
add rax, 1
cmp rax, 0x10
jge 0x18012ccd6
mov cx, word [rsp + 0x78]
jmp 0x18012ccc0
add rsi, 3
sub r14d, 3
jmp 0x18012cd10
cmp r14d, 0xe
jl 0x18012ceb0
lea rdx, [rsp + 0x78]
mov rcx, rsi
call fcn.18012bb70
mov r9, qword [rsp + 0x60]
mov r8d, dword [rsp + 0x20]
add rsi, 0xe
lea r10, [0x18020c8e0]
sub r14d, 0xe
cmp byte [r12 + rbp + 0x20], 0
je 0x18012cd66
xor ecx, ecx
nop
nop
movzx eax, word [rsp + rcx*2 + 0x78]
add rcx, 4
cmp rcx, 0x10
movzx eax, word [r10 + rax*2]
mov word [rsp + rcx*2 + 0x70], ax
movzx eax, word [rsp + rcx*2 + 0x72]
movzx eax, word [r10 + rax*2]
mov word [rsp + rcx*2 + 0x72], ax
movzx eax, word [rsp + rcx*2 + 0x74]
movzx eax, word [r10 + rax*2]
mov word [rsp + rcx*2 + 0x74], ax
movzx eax, word [rsp + rcx*2 + 0x76]
movzx eax, word [r10 + rax*2]
mov word [rsp + rcx*2 + 0x76], ax
jl 0x18012cd20
lea eax, [rdi + 3]
cmp eax, ebx
jge 0x18012cd74
mov ebx, 8
jmp 0x18012cd78
sub ebx, edi
add ebx, ebx
lea eax, [r8 + 2]
cmp eax, dword [r12 + rbp + 0x14]
jge 0x18012cdd8
movsxd rbx, ebx
lea rdx, [rsp + 0x78]
mov rcx, r9
mov r8, rbx
call fcn.180161690
lea rdx, [rsp + 0x80]
mov r8, rbx
mov rcx, r13
call fcn.180161690
lea rdx, [rsp + 0x88]
mov r8, rbx
mov rcx, r15
call fcn.180161690
mov rcx, qword [rsp + 0x48]
lea rdx, [rsp + 0x90]
mov r8, rbx
call fcn.180161690
mov r8d, dword [rsp + 0x20]
jmp 0x18012ce32
movsxd rbx, ebx
lea rdx, [rsp + 0x78]
mov rcx, r9
mov r8, rbx
call fcn.180161690
mov r8d, dword [rsp + 0x20]
cmp r8d, dword [r12 + rbp + 0x14]
jge 0x18012ce0f
lea rdx, [rsp + 0x80]
mov r8, rbx
mov rcx, r13
call fcn.180161690
mov r8d, dword [rsp + 0x20]
lea eax, [r8 + 1]
cmp eax, dword [r12 + rbp + 0x14]
jge 0x18012ce32
lea rdx, [rsp + 0x88]
mov r8, rbx
mov rcx, r15
call fcn.180161690
mov r8d, dword [rsp + 0x20]
mov r9, qword [rsp + 0x60]
mov ebx, dword [r12 + rbp + 0x10]
add qword [rsp + 0x48], 8
add r9, 8
add edi, 4
add r13, 8
add r15, 8
cmp edi, ebx
lea r10, [0x18020c8e0]
mov qword [rsp + 0x60], r9
jl 0x18012cc80
mov ecx, dword [rsp + 0x28]
add r8d, 4
add ecx, 4
mov dword [rsp + 0x20], r8d
cmp ecx, dword [r12 + rbp + 0x14]
mov dword [rsp + 0x28], ecx
jl 0x18012cc40
mov r13, qword [rsp + 0x58]
mov ecx, dword [rsp + 0x40]
add rbp, 0x28
add ecx, 1
cmp ecx, dword [r13 + 0x30]
mov dword [rsp + 0x40], ecx
jge 0x18012cebc
lea r10, [0x18020c8e0]
jmp 0x18012cbd2
call fcn.18012be10
int3
call fcn.18012be10
int3
call fcn.18012be10
int3
mov r15d, dword [rsp + 0x50]
cmp dword [r13 + 0x18], 1
mov rbp, qword [r13 + 0x28]
jne 0x18012cfdf
mov eax, dword [rsp + 0x24]
cmp r15d, eax
jg 0x18012d0a5
nop
xor r12d, r12d
cmp dword [r13 + 0x30], r12d
jle 0x18012cfcd
xor edi, edi
nop
test r15d, r15d
mov rsi, qword [r13 + 0x40]
mov r8d, dword [rdi + rsi + 0x18]
js 0x18012cf19
test r8d, r8d
js 0x18012cf0e
mov eax, r15d
cdq
idiv r8d
mov ecx, eax
jmp 0x18012cf42
mov eax, r15d
cdq
idiv r8d
mov ecx, eax
jmp 0x18012cf42
test r8d, r8d
js 0x18012cf31
mov eax, r8d
sub eax, r15d
sub eax, 1
cdq
idiv r8d
mov ecx, eax
neg ecx
jmp 0x18012cf42
or eax, 0xffffffff
sub eax, r8d
sub eax, r15d
cdq
idiv r8d
mov ecx, eax
neg ecx
imul ecx, r8d
cmp r15d, ecx
jne 0x18012cfb7
cmp dword [rdi + rsi + 0x1c], 1
jne 0x18012cf90
mov edx, dword [rdi + rsi + 0x10]
test edx, edx
jle 0x18012cfb7
nop
nop
mov rax, qword [rdi + rsi + 8]
sub edx, 1
add rbp, 2
movzx ecx, word [rax]
mov byte [rsp + 0x20], cl
shr cx, 8
mov byte [rsp + 0x21], cl
movzx eax, word [rsp + 0x20]
mov word [rbp - 2], ax
add qword [rdi + rsi + 8], 2
test edx, edx
jg 0x18012cf60
jmp 0x18012cfb7
mov eax, dword [rdi + rsi + 0x24]
mov rdx, qword [rdi + rsi + 8]
mov rcx, rbp
imul eax, dword [rdi + rsi + 0x10]
movsxd rbx, eax
add rbx, rbx
mov r8, rbx
call fcn.180161690
add rbp, rbx
add qword [rdi + rsi + 8], rbx
add r12d, 1
add rdi, 0x28
cmp r12d, dword [r13 + 0x30]
jl 0x18012cef0
mov eax, dword [rsp + 0x24]
add r15d, 1
cmp r15d, eax
jle 0x18012cee0
jmp 0x18012d0a5
mov eax, dword [rsp + 0x24]
cmp r15d, eax
jg 0x18012d0a5
nop
xor r12d, r12d
cmp dword [r13 + 0x30], r12d
jle 0x18012d098
xor edi, edi
nop
test r15d, r15d
mov rsi, qword [r13 + 0x40]
mov r8d, dword [rdi + rsi + 0x18]
js 0x18012d029
test r8d, r8d
js 0x18012d01e
mov eax, r15d
cdq
idiv r8d
mov ecx, eax
jmp 0x18012d052
mov eax, r15d
cdq
idiv r8d
mov ecx, eax
jmp 0x18012d052
test r8d, r8d
js 0x18012d041
mov eax, r8d
sub eax, r15d
sub eax, 1
cdq
idiv r8d
mov ecx, eax
neg ecx
jmp 0x18012d052
or eax, 0xffffffff
sub eax, r8d
sub eax, r15d
cdq
idiv r8d
mov ecx, eax
neg ecx
imul ecx, r8d
cmp r15d, ecx
jne 0x18012d082
mov eax, dword [rdi + rsi + 0x24]
mov rdx, qword [rdi + rsi + 8]
mov rcx, rbp
imul eax, dword [rdi + rsi + 0x10]
movsxd rbx, eax
add rbx, rbx
mov r8, rbx
call fcn.180161690
add rbp, rbx
add qword [rdi + rsi + 8], rbx
add r12d, 1
add rdi, 0x28
cmp r12d, dword [r13 + 0x30]
jl 0x18012d000
mov eax, dword [rsp + 0x24]
add r15d, 1
cmp r15d, eax
jle 0x18012cff0
test r14d, r14d
jle 0x18012d0b0
call fcn.18012be50
int3
mov rax, qword [rsp + 0x70]
mov rcx, qword [r13 + 0x28]
mov r12, qword [rsp + 0xb0]
mov rdi, qword [rsp + 0xb8]
mov rbx, qword [rsp + 0xf0]
mov r15, qword [rsp + 0xa0]
mov qword [rax], rcx
sub ebp, dword [r13 + 0x28]
mov r13, qword [rsp + 0xa8]
mov eax, ebp
mov rbp, qword [rsp + 0xc0]
mov rcx, qword [rsp + 0x98]
xor rcx, rsp
call fcn.1801604e0
add rsp, 0xc8
pop r14
pop rsi
ret