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

Disassembly:
mov qword [rsp + 0x20], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x110
mov rax, qword [0x1806c4cd8]
xor rax, rsp
mov qword [rsp + 0x108], rax
mov rax, qword [rcx + 0x40]
xor ebp, ebp
mov r11, qword [rcx + 0x10]
mov r15d, 0xff
mov r12, qword [rcx + 0x50]
mov r14, rdx
mov qword [rsp + 0x50], r9
mov ebx, dword [rax + 4]
mov esi, dword [rax]
mov rax, qword [rdx + 0x40]
mov qword [rsp + 0x68], r8
mov qword [rsp + 0xc0], rdx
mov dword [rsp + 0x30], ebx
mov edi, dword [rax + 4]
mov r10d, dword [rax]
mov eax, dword [rcx]
mov rcx, qword [rsp + 0x180]
sar eax, 3
and eax, 0x1ff
mov dword [rsp + 0x34], esi
inc eax
mov dword [rsp + 0x3c], edi
cvtsd2si r9d, qword [rcx + 0x18]
mov dword [rsp + 0x20], eax
mov qword [rsp + 0x28], r11
mov qword [rsp + 0x48], r12
cmp r9d, r15d
jbe 0x180487916
test r9d, r9d
mov eax, ebp
cmovg eax, r15d
mov r9d, eax
cvtsd2si r8d, qword [rcx + 0x10]
cmp r8d, r15d
jbe 0x18048792d
test r8d, r8d
mov eax, ebp
cmovg eax, r15d
mov r8d, eax
cvtsd2si edx, qword [rcx + 8]
cmp edx, r15d
jbe 0x180487941
test edx, edx
mov eax, ebp
cmovg eax, r15d
mov edx, eax
cvtsd2si ecx, qword [rcx]
cmp ecx, r15d
jbe 0x180487960
test ecx, ecx
mov eax, ebp
cmovg eax, r15d
mov ecx, eax
nop dword [rax]
nop dword [rax + rax]
cmp dword [rsp + 0x178], 5
lea eax, [rbx - 7]
mov rbx, qword [rsp + 0x50]
mov r15d, 4
cmovne r15d, dword [rsp + 0x178]
test eax, eax
mov byte [rsp + 0x26], r8b
mov r8, qword [rsp + 0x68]
cmovs eax, ebp
mov dword [rsp + 0x58], eax
lea eax, [rsi - 7]
test eax, eax
mov byte [rsp + 0x24], cl
mov byte [rsp + 0x25], dl
cmovs eax, ebp
mov byte [rsp + 0x27], r9b
mov dword [rsp + 0x5c], eax
mov eax, dword [r14]
shr eax, 0xe
mov dword [rsp + 0x38], r15d
test al, 1
je 0x1804879db
mov eax, dword [r8]
shr eax, 0xe
test al, 1
je 0x1804879db
mov eax, dword [rbx]
shr eax, 0xe
test al, 1
je 0x1804879db
imul edi, r10d
mov r10d, 1
mov dword [rsp + 0x3c], edi
mov r9d, dword [rsp + 0x20]
mov qword [rsp + 0x60], r9
mov r13d, r9d
test r10d, r10d
jle 0x180487ddd
mov rdx, rbp
mov qword [rsp + 0xa0], r10
mov rcx, rbp
mov qword [rsp + 0x98], rdx
mov qword [rsp + 0x90], rcx
nop
mov rax, qword [r14 + 0x48]
mov rbp, qword [rax]
mov rax, qword [r8 + 0x48]
mov r8, qword [r8 + 0x10]
imul rbp, rcx
mov rcx, qword [rax]
add rbp, qword [r14 + 0x10]
mov rax, qword [rbx + 0x48]
imul rcx, rdx
mov rax, qword [rax]
imul rax, rdx
add r8, rcx
mov qword [rsp + 0x40], rbp
add rax, qword [rbx + 0x10]
mov qword [rsp + 0xb8], r8
mov qword [rsp + 0x80], rax
test edi, edi
jle 0x180487da8
xor r10d, r10d
mov edx, edi
mov ecx, r10d
mov qword [rsp + 0x88], rdx
mov qword [rsp + 0x78], rcx
movsx edx, word [rcx + r8]
movzx ebx, word [rax]
movsx r8d, word [r8 + rcx + 2]
shl rbx, 7
add rbx, qword [rsp + 0x170]
lea r14d, [rdx - 3]
mov eax, r14d
imul eax, r9d
lea edi, [r8 - 3]
movsxd rcx, edi
imul rcx, r12
movsxd r9, eax
lea rax, [r11 + rcx]
add r9, rax
cmp r14d, dword [rsp + 0x58]
jae 0x180487e08
cmp edi, dword [rsp + 0x5c]
jae 0x180487e08
xor eax, eax
mov r10d, eax
test r13, r13
je 0x180487d3c
lea rsi, [r13*2]
lea rbp, [r13*4]
add rsi, r13
add rbp, r13
lea r14, [r13*2]
imul rdi, r13, 7
add r14, r13
lea r15, [r12*8]
jmp 0x180487b02
xor eax, eax
mov r8d, eax
mov r11d, 2
nop dword [rax + rax]
movzx edx, byte [r9 + r13]
movzx ecx, byte [r9 + r13*2]
movsx eax, word [rbx + 2]
imul edx, eax
movsx eax, word [rbx + 4]
imul ecx, eax
movsx eax, word [rbx + 6]
add edx, ecx
movzx ecx, byte [r14 + r9]
imul ecx, eax
movsx eax, word [rbx + 8]
add edx, ecx
movzx ecx, byte [r9 + r13*4]
imul ecx, eax
movsx eax, word [rbx + 0xa]
add edx, ecx
movzx ecx, byte [r9 + rbp]
imul ecx, eax
movsx eax, word [rbx + 0xc]
add edx, ecx
movzx ecx, byte [r9 + rsi*2]
imul ecx, eax
movsx eax, word [rbx + 0xe]
add edx, ecx
movzx ecx, byte [rdi + r9]
imul ecx, eax
movsx eax, word [rbx]
add edx, ecx
movzx ecx, byte [r9]
imul ecx, eax
add r9, r12
movsx eax, word [rbx + 0x12]
add r8d, ecx
movzx ecx, byte [r9 + r13*2]
add r8d, edx
movzx edx, byte [r9 + r13]
imul edx, eax
movsx eax, word [rbx + 0x14]
imul ecx, eax
movsx eax, word [rbx + 0x16]
add edx, ecx
movzx ecx, byte [r14 + r9]
imul ecx, eax
movsx eax, word [rbx + 0x18]
add edx, ecx
movzx ecx, byte [r9 + r13*4]
imul ecx, eax
movsx eax, word [rbx + 0x1a]
add edx, ecx
movzx ecx, byte [r9 + rbp]
imul ecx, eax
movsx eax, word [rbx + 0x1c]
add edx, ecx
movzx ecx, byte [r9 + rsi*2]
imul ecx, eax
movsx eax, word [rbx + 0x1e]
add edx, ecx
movzx ecx, byte [rdi + r9]
imul ecx, eax
movzx eax, byte [r9]
add r9, r12
add edx, ecx
movsx ecx, word [rbx + 0x10]
imul ecx, eax
movsx eax, word [rbx + 0x22]
add r8d, ecx
movzx ecx, byte [r9 + r13*2]
add r8d, edx
movzx edx, byte [r9 + r13]
imul edx, eax
movsx eax, word [rbx + 0x24]
imul ecx, eax
movsx eax, word [rbx + 0x26]
add edx, ecx
movzx ecx, byte [r14 + r9]
imul ecx, eax
movsx eax, word [rbx + 0x28]
add edx, ecx
movzx ecx, byte [r9 + r13*4]
imul ecx, eax
add edx, ecx
movzx ecx, byte [r9 + rbp]
movsx eax, word [rbx + 0x2a]
imul ecx, eax
movsx eax, word [rbx + 0x2c]
add edx, ecx
movzx ecx, byte [r9 + rsi*2]
imul ecx, eax
movsx eax, word [rbx + 0x2e]
add edx, ecx
movzx ecx, byte [rdi + r9]
imul ecx, eax
movzx eax, byte [r9]
add r9, r12
add edx, ecx
movsx ecx, word [rbx + 0x20]
imul ecx, eax
movsx eax, word [rbx + 0x32]
add r8d, ecx
movzx ecx, byte [r9 + r13*2]
add r8d, edx
movzx edx, byte [r9 + r13]
imul edx, eax
movsx eax, word [rbx + 0x34]
imul ecx, eax
movsx eax, word [rbx + 0x36]
add edx, ecx
movzx ecx, byte [r14 + r9]
imul ecx, eax
movsx eax, word [rbx + 0x38]
add edx, ecx
movzx ecx, byte [r9 + r13*4]
imul ecx, eax
movsx eax, word [rbx + 0x3a]
add edx, ecx
movzx ecx, byte [r9 + rbp]
imul ecx, eax
movsx eax, word [rbx + 0x3c]
add edx, ecx
movzx ecx, byte [r9 + rsi*2]
imul ecx, eax
movsx eax, word [rbx + 0x3e]
add edx, ecx
movzx ecx, byte [rdi + r9]
imul ecx, eax
movzx eax, byte [r9]
add r9, r12
add edx, ecx
movsx ecx, word [rbx + 0x30]
imul ecx, eax
add rbx, 0x40
add r8d, ecx
add r8d, edx
sub r11, 1
jne 0x180487b10
mov eax, 1
lea ecx, [r8 + 0x4000]
sub rax, r15
sar ecx, 0xf
add r9, rax
add rbx, 0xffffffffffffff80
mov edx, 0xff
cmp ecx, edx
jbe 0x180487d18
xor eax, eax
test ecx, ecx
cmovg eax, edx
mov ecx, eax
mov rax, qword [rsp + 0x40]
mov byte [r10 + rax], cl
inc r10
cmp r10, r13
jl 0x180487b00
mov r11, qword [rsp + 0x28]
mov rbp, rax
mov esi, dword [rsp + 0x34]
xor r10d, r10d
mov r9d, dword [rsp + 0x20]
mov rcx, qword [rsp + 0x78]
add rbp, r13
mov rax, qword [rsp + 0x80]
add rcx, 4
mov r15d, dword [rsp + 0x38]
add rax, 2
sub qword [rsp + 0x88], 1
mov r8, qword [rsp + 0xb8]
mov qword [rsp + 0x78], rcx
mov qword [rsp + 0x80], rax
mov qword [rsp + 0x40], rbp
jne 0x180487a72
mov rdx, qword [rsp + 0x98]
mov edi, dword [rsp + 0x3c]
mov r14, qword [rsp + 0xc0]
mov r10, qword [rsp + 0xa0]
mov rbx, qword [rsp + 0x50]
mov rcx, qword [rsp + 0x90]
inc rdx
mov r8, qword [rsp + 0x68]
inc rcx
sub r10, 1
mov qword [rsp + 0x90], rcx
mov qword [rsp + 0xa0], r10
mov qword [rsp + 0x98], rdx
jne 0x180487a10
mov rcx, qword [rsp + 0x108]
xor rcx, rsp
call fcn.1804688c0
mov rbx, qword [rsp + 0x168]
add rsp, 0x110
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
cmp dword [rsp + 0x178], 5
mov eax, dword [rsp + 0x30]
jne 0x180487e27
cmp edx, eax
jae 0x180487d3c
cmp r8d, esi
jae 0x180487d3c
test r15d, r15d
jne 0x180487e79
cmp r14d, eax
jge 0x180487e44
lea eax, [r14 + 8]
test eax, eax
jle 0x180487e44
cmp edi, esi
jge 0x180487e44
lea eax, [rdi + 8]
test eax, eax
jg 0x180487e79
test r13, r13
je 0x180487d3c
mov rdx, rbp
lea r8, [rsp + 0x24]
neg rdx
mov rcx, rbp
add r8, rdx
nop
movzx eax, byte [rcx + r8]
mov byte [rcx], al
lea rcx, [rcx + 1]
lea rax, [rcx + rdx]
cmp rax, r13
jl 0x180487e60
jmp 0x180487d3c
mov r12d, dword [rsp + 0x34]
mov rsi, r10
mov ebp, dword [rsp + 0x30]
sub r14d, edi
mov r13d, dword [rsp + 0x20]
nop dword [rax]
lea ecx, [r14 + rdi]
mov r8d, r15d
mov edx, ebp
call fcn.1804aca00
imul eax, r13d
mov r8d, r15d
mov edx, r12d
mov ecx, edi
mov dword [rsp + rsi + 0xc8], eax
call fcn.1804aca00
mov dword [rsp + rsi + 0xe8], eax
inc edi
add rsi, 4
cmp rsi, 0x20
jl 0x180487e90
mov r13, qword [rsp + 0x60]
mov r12, qword [rsp + 0x48]
mov rbp, qword [rsp + 0x40]
test r13, r13
je 0x1804881a0
movsxd r11, dword [rsp + 0xe4]
mov rax, rbp
mov rdi, qword [rsp + 0xe0]
mov rcx, rbp
mov rsi, qword [rsp + 0xdc]
lea rbp, [rsp + 0x24]
mov r14, qword [rsp + 0xd4]
neg rax
mov r15, qword [rsp + 0xd0]
mov r12, qword [rsp + 0xcc]
movsxd r13, dword [rsp + 0xc8]
mov qword [rsp + 0xa8], rax
add rax, rbp
mov rbp, qword [rsp + 0xd8]
mov qword [rsp + 0xb0], rax
mov qword [rsp + 0x70], rcx
nop word [rax + rax]
movzx r8d, byte [rax + rcx]
mov rcx, qword [rsp + 0x28]
mov edx, r8d
shl edx, 0xf
xor r10d, r10d
movsxd rax, dword [rsp + r10*4 + 0xe8]
mov r9, rax
imul r9, qword [rsp + 0x48]
add r9, rcx
test eax, eax
js 0x180488043
test r13d, r13d
js 0x180487f95
movzx ecx, byte [r13 + r9]
movsx eax, word [rbx]
sub ecx, r8d
imul ecx, eax
add edx, ecx
test r12d, r12d
js 0x180487fae
movsxd rax, r12d
movzx ecx, byte [rax + r9]
movsx eax, word [rbx + 2]
sub ecx, r8d
imul ecx, eax
add edx, ecx
test r15d, r15d
js 0x180487fc7
movsxd rax, r15d
movzx ecx, byte [rax + r9]
movsx eax, word [rbx + 4]
sub ecx, r8d
imul ecx, eax
add edx, ecx
test r14d, r14d
js 0x180487fe0
movsxd rax, r14d
movzx ecx, byte [rax + r9]
movsx eax, word [rbx + 6]
sub ecx, r8d
imul ecx, eax
add edx, ecx
test ebp, ebp
js 0x180487ff8
movsxd rax, ebp
movzx ecx, byte [rax + r9]
movsx eax, word [rbx + 8]
sub ecx, r8d
imul ecx, eax
add edx, ecx
test esi, esi
js 0x180488010
movsxd rax, esi
movzx ecx, byte [rax + r9]
movsx eax, word [rbx + 0xa]
sub ecx, r8d
imul ecx, eax
add edx, ecx
test edi, edi
js 0x180488028
movsxd rax, edi
movzx ecx, byte [rax + r9]
movsx eax, word [rbx + 0xc]
sub ecx, r8d
imul ecx, eax
add edx, ecx
test r11d, r11d
js 0x18048803e
movzx ecx, byte [r11 + r9]
movsx eax, word [rbx + 0xe]
sub ecx, r8d
imul ecx, eax
add edx, ecx
mov rcx, qword [rsp + 0x28]
movsxd rax, dword [rsp + r10*4 + 0xec]
mov r9, rax
imul r9, qword [rsp + 0x48]
add r9, rcx
test eax, eax
js 0x180488124
test r13d, r13d
js 0x180488076
movzx ecx, byte [r13 + r9]
movsx eax, word [rbx + 0x10]
sub ecx, r8d
imul ecx, eax
add edx, ecx
test r12d, r12d
js 0x18048808f
movsxd rax, r12d
movzx ecx, byte [rax + r9]
movsx eax, word [rbx + 0x12]
sub ecx, r8d
imul ecx, eax
add edx, ecx
test r15d, r15d
js 0x1804880a8
movsxd rax, r15d
movzx ecx, byte [rax + r9]
movsx eax, word [rbx + 0x14]
sub ecx, r8d
imul ecx, eax
add edx, ecx
test r14d, r14d
js 0x1804880c1
movsxd rax, r14d
movzx ecx, byte [rax + r9]
movsx eax, word [rbx + 0x16]
sub ecx, r8d
imul ecx, eax
add edx, ecx
test ebp, ebp
js 0x1804880d9
movsxd rax, ebp
movzx ecx, byte [rax + r9]
movsx eax, word [rbx + 0x18]
sub ecx, r8d
imul ecx, eax
add edx, ecx
test esi, esi
js 0x1804880f1
movsxd rax, esi
movzx ecx, byte [rax + r9]
movsx eax, word [rbx + 0x1a]
sub ecx, r8d
imul ecx, eax
add edx, ecx
test edi, edi
js 0x180488109
movsxd rax, edi
movzx ecx, byte [rax + r9]
movsx eax, word [rbx + 0x1c]
sub ecx, r8d
imul ecx, eax
add edx, ecx
test r11d, r11d
js 0x18048811f
movzx ecx, byte [r11 + r9]
movsx eax, word [rbx + 0x1e]
sub ecx, r8d
imul ecx, eax
add edx, ecx
mov rcx, qword [rsp + 0x28]
add rbx, 0x20
add r10, 2
cmp r10, 8
jl 0x180487f63
add edx, 0x4000
mov ecx, 0xff
sar edx, 0xf
cmp edx, ecx
jbe 0x180488151
xor eax, eax
test edx, edx
cmovg eax, ecx
mov edx, eax
mov rcx, qword [rsp + 0x70]
add rbx, 0xffffffffffffff80
mov rax, qword [rsp + 0xa8]
mov byte [rcx], dl
inc rcx
mov rdx, qword [rsp + 0x28]
add rax, rcx
inc rdx
mov qword [rsp + 0x70], rcx
cmp rax, qword [rsp + 0x60]
mov rax, qword [rsp + 0xb0]
mov qword [rsp + 0x28], rdx
jl 0x180487f50
mov r12, qword [rsp + 0x48]
mov r13, qword [rsp + 0x60]
mov rbp, qword [rsp + 0x40]
jmp 0x1804881a5
mov rdx, qword [rsp + 0x28]
mov r9d, dword [rsp + 0x20]
mov esi, dword [rsp + 0x34]
sub rdx, r9
mov qword [rsp + 0x28], rdx
mov r11, rdx
xor r10d, r10d
jmp 0x180487d41