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

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x58
mov eax, dword [rcx + 0x30]
mov dword [rsp + 0xa8], edx
mov rbx, rcx
mov r14, r8
mov dword [rsp + 0xb8], r9d
mov dword [rsp + 0x44], eax
test eax, eax
jne 0x845c9e
mov rdi, qword [rcx + 0x10]
mov rsi, qword [r8 + 0x28]
mov byte [r8], 1
mov dword [rsp + 0x40], 0
lea rax, [rdi + 0x90]
mov dword [rsp + 0x38], 0
mov qword [rsp + 0x48], rax
mov eax, dword [r8 + 0x30]
test eax, eax
jle 0x845e10
mov qword [rsp + 0xb0], r8
jmp 0x84583a
movzx eax, r14b
mov word [rsp + 0x30], ax
mov rax, qword [rsi + 8]
test byte [rax + 4], 0x20
jne 0x845cb0
mov rcx, qword [rsp + 0xb0]
mov rax, qword [rsp + 0xb0]
mov eax, dword [rax + 0x20]
add eax, dword [rcx + 0xc]
mov ecx, dword [rsp + 0x38]
lea edx, [rax + rcx]
movsxd rax, dword [rdi + 0x90]
cmp eax, dword [rdi + 0x94]
jge 0x845d30
lea ecx, [rax + 1]
mov dword [rdi + 0x90], ecx
lea rcx, [rax + rax*2]
mov rax, qword [rdi + 0x88]
lea rax, [rax + rcx*8]
mov dword [rax + 8], r13d
mov dword [rax + 0xc], edx
mov qword [rax + 0x10], 0
mov qword [rax], 0xa2
mov rcx, qword [rdi]
mov rdx, qword [rsi + 8]
cmp byte [rcx + 0x67], 0
jne 0x845bc8
movsxd rcx, dword [rdi + 0x90]
lea r8, [rcx + rcx*2]
mov rax, rcx
mov rcx, qword [rdi + 0x88]
lea rcx, [rcx + r8*8 - 0x18]
mov byte [rcx + 1], 0xf9
mov qword [rcx + 0x10], rdx
test eax, eax
jle 0x8457fc
mov r8, qword [rdi + 0x88]
movzx ecx, word [rsp + 0x30]
lea rax, [rax + rax*2]
lea rax, [r8 + rax*8]
mov word [rax - 0x16], cx
cmp r14d, 1
je 0x845b08
cmp dword [rbx + 0x28], r14d
jge 0x845814
mov dword [rbx + 0x28], r14d
mov dword [rbx + 0x2c], r13d
test ebp, ebp
jne 0x845a50
mov rcx, qword [rsp + 0xb0]
add dword [rsp + 0x38], 1
add rsi, 0x20
mov eax, dword [rsp + 0x38]
cmp dword [rcx + 0x30], eax
jle 0x845d50
mov rax, qword [rsi]
xor ebp, ebp
mov r12, qword [rax + 0x20]
test byte [rax + 7], 1
je 0x84589d
mov rax, qword [rax + 0x40]
mov r13, qword [rax + 0x48]
mov rax, qword [rsp + 0xb0]
mov r14d, dword [rax + 0x24]
test r14d, r14d
je 0x845880
mov rax, qword [rsi + 8]
test byte [rax + 4], 0x20
je 0x845880
mov ebp, dword [rsp + 0xa8]
test ebp, ebp
jne 0x845f10
nop dword [rax + rax]
mov eax, dword [rbx + 0x44]
mov r9d, 0x10
mov rdx, r13
mov rcx, rbx
lea ebp, [rax - 1]
mov dword [rbx + 0x44], ebp
mov r8d, ebp
call fcn.007b8b90
mov r10d, dword [rsi + 0x18]
test r10d, r10d
js 0x845a80
mov rax, qword [rsi]
cmp byte [rsi + 0x1d], 1
mov r14d, dword [r12]
mov rax, qword [rax + 0x10]
mov rdx, qword [rax + 0x20]
mov r15d, dword [rdx]
adc r15d, 0
cmp byte [rsi + 0x1c], 0
je 0x8458cd
add r15d, r14d
lea r10d, [r15 + 1]
test r15d, r15d
je 0x845d08
mov eax, dword [rbx + 0x28]
cmp r10d, eax
jg 0x845af0
mov r13d, dword [rbx + 0x2c]
sub eax, r10d
mov dword [rbx + 0x28], eax
lea ecx, [r10 + r13]
mov dword [rbx + 0x2c], ecx
xor r9d, r9d
mov r8d, r13d
mov rcx, rbx
mov dword [rsp + 0x3c], r10d
mov dword [rsp + 0x20], 1
mov qword [rsp + 0x30], rdx
call fcn.007b4080
mov rdx, qword [rsp + 0x30]
cmp byte [rsi + 0x1d], 0
mov r10d, dword [rsp + 0x3c]
mov r11d, dword [rdx]
je 0x845b68
cmp byte [rsi + 0x1c], 0
mov r8d, r13d
jne 0x845b30
mov eax, dword [rsi + 0x10]
test eax, eax
js 0x84597e
test ebp, ebp
jne 0x845952
mov eax, dword [rbx + 0x44]
lea ebp, [rax - 1]
mov dword [rbx + 0x44], ebp
mov eax, dword [rsi + 0x10]
mov dword [rsp + 0x28], r8d
mov edx, dword [rsp + 0xb8]
mov r9d, ebp
mov r8d, eax
mov qword [rsp + 0x20], r12
mov rcx, rbx
mov dword [rsp + 0x30], r10d
call fcn.006e7480
mov r10d, dword [rsp + 0x30]
mov dword [rsi + 0x10], eax
mov r8d, dword [rsi + 0x18]
test r8d, r8d
js 0x845738
movsxd rdx, dword [rdi + 0x90]
mov ecx, dword [rdi + 0x94]
lea r12d, [r10 + r13 - 1]
cmp edx, ecx
jge 0x845eb8
lea eax, [rdx + 1]
lea r9, [rdx + rdx*2]
mov rdx, qword [rdi + 0x88]
mov dword [rdi + 0x90], eax
lea rdx, [rdx + r9*8]
mov dword [rdx + 4], r13d
mov dword [rdx + 8], r15d
mov dword [rdx + 0xc], r12d
mov qword [rdx + 0x10], 0
mov dword [rdx], 0x61
cmp eax, ecx
jge 0x845e88
lea edx, [rax + 1]
cdqe
movd xmm1, r13d
mov dword [rdi + 0x90], edx
lea rdx, [rax + rax*2]
movd xmm2, r15d
mov rax, qword [rdi + 0x88]
movd xmm0, r8d
movd xmm3, r12d
punpckldq xmm1, xmm2
lea rax, [rax + rdx*8]
punpckldq xmm0, xmm3
mov dword [rax], 0xfd8a
punpcklqdq xmm0, xmm1
movups xmmword [rax + 4], xmm0
cmp r10d, 1
je 0x845b08
cmp dword [rbx + 0x28], r10d
jge 0x845814
mov dword [rbx + 0x28], r10d
mov dword [rbx + 0x2c], r13d
test ebp, ebp
je 0x84581c
nop word [rax + rax]
mov rcx, qword [rdi + 0x18]
not ebp
mov eax, dword [rcx + 0x44]
add eax, dword [rcx + 0x48]
js 0x845e70
mov edx, dword [rdi + 0x90]
mov rax, qword [rcx + 0x50]
movsxd rbp, ebp
mov dword [rax + rbp*4], edx
jmp 0x84581c
test r12, r12
je 0x845be0
mov r14d, dword [r12]
cmp r14d, 1
je 0x845f50
mov eax, dword [rbx + 0x28]
cmp r14d, eax
jle 0x845df8
mov eax, dword [rbx + 0x38]
lea r13d, [rax + 1]
add eax, r14d
mov dword [rbx + 0x38], eax
xor r9d, r9d
mov r8d, r13d
mov rdx, r12
mov rcx, rbx
mov dword [rsp + 0x20], 1
mov r15d, 0xffffffff
call fcn.007b4080
mov eax, dword [rsi + 0x10]
xor r10d, r10d
test eax, eax
js 0x84597e
mov r8d, r13d
xor r10d, r10d
mov r15d, 0xffffffff
jmp 0x845942
mov eax, dword [rbx + 0x38]
lea r13d, [rax + 1]
add eax, r10d
mov dword [rbx + 0x38], eax
jmp 0x8458f7
test r13d, r13d
je 0x845814
movzx eax, byte [rbx + 0x1f]
cmp al, 7
ja 0x845814
lea edx, [rax + 1]
mov byte [rbx + 0x1f], dl
mov dword [rbx + rax*4 + 0xe8], r13d
jmp 0x845814
lea r8d, [r11 + r13]
xor r9d, r9d
mov rdx, r12
mov rcx, rbx
mov dword [rsp + 0x20], 1
mov dword [rsp + 0x3c], r10d
mov dword [rsp + 0x30], r8d
call fcn.007b4080
mov r8d, dword [rsp + 0x30]
mov r10d, dword [rsp + 0x3c]
jmp 0x84593b
mov r8d, dword [rsi + 0x18]
movsxd rax, dword [rdi + 0x90]
lea r9d, [r11 + r13]
cmp eax, dword [rdi + 0x94]
jge 0x845f78
lea edx, [rax + 1]
mov dword [rdi + 0x90], edx
lea rdx, [rax + rax*2]
mov rax, qword [rdi + 0x88]
lea rax, [rax + rdx*8]
mov dword [rax + 4], r8d
mov dword [rax + 8], r9d
mov dword [rax + 0xc], 0
mov qword [rax + 0x10], 0
mov dword [rax], 0x7e
add r11d, 1
jmp 0x84592e
test byte [rdx + 4], 0x10
jne 0x845f00
movsxd rax, dword [rdi + 0x90]
jmp 0x8457e0
mov rax, qword [rsi + 8]
xor r14d, r14d
xor r13d, r13d
test byte [rax + 4], 0x20
mov eax, 0
mov word [rsp + 0x30], ax
je 0x84574f
mov rax, qword [rbx]
mov r12, qword [rax + 0x10]
nop dword [rax]
mov r9d, dword [rsp + 0x40]
test r9d, r9d
jne 0x845c32
mov rax, qword [rsp + 0xb0]
mov eax, dword [rax + 0x24]
mov dword [rsp + 0x40], eax
test eax, eax
je 0x845c32
mov eax, dword [rbx + 0x38]
add eax, 1
mov dword [rsp + 0x40], eax
mov dword [rbx + 0x38], eax
mov edx, dword [rdi + 0x90]
cmp edx, dword [rdi + 0x94]
jge 0x845ff0
lea eax, [rdx + 1]
mov dword [rdi + 0x90], eax
movsxd rax, edx
lea rcx, [rax + rax*2]
mov rax, qword [rdi + 0x88]
lea rax, [rax + rcx*8]
mov ecx, dword [rsp + 0x40]
mov qword [rax + 8], 0
mov dword [rax + 4], ecx
mov qword [rax + 0x10], 0
mov dword [rax], 0x55
mov r9d, 0xfffffffe
mov r8, r12
mov rcx, rdi
call fcn.007ffe40
jmp 0x84574f
mov dword [rdi + 0x90], ebp
add rsp, 0x58
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
lea r8, [r12 + 8]
test r14d, r14d
jle 0x845bfe
xor r15d, r15d
mov r12, r8
nop dword [rax]
mov rdx, qword [r12]
mov rcx, rbx
add r15d, 1
add r12, 0x20
call fcn.007b7cf0
test rax, rax
jne 0x845ef0
cmp r15d, r14d
jl 0x845cc8
mov r12, rax
test rax, rax
jne 0x845c08
mov rax, qword [rbx]
mov r12, qword [rax + 0x10]
jmp 0x845c08
movzx eax, byte [rbx + 0x1f]
test al, al
je 0x845e40
sub eax, 1
mov byte [rbx + 0x1f], al
movzx eax, al
mov r13d, dword [rbx + rax*4 + 0xe8]
jmp 0x8458f7
mov dword [rsp + 0x20], edx
mov r9d, r13d
xor r8d, r8d
mov edx, 0xa2
mov rcx, rdi
call fcn.0074a520
jmp 0x8457ad
mov r14, rcx
mov ecx, dword [rsp + 0x40]
test ecx, ecx
je 0x845e10
mov r8d, dword [rsp + 0x40]
mov edx, 0x10
xor r9d, r9d
mov rcx, rdi
call fcn.007ff390
mov edx, dword [r14 + 0x24]
mov rsi, qword [r14 + 0x18]
movsxd rbp, eax
test edx, edx
jle 0x845dbc
mov r12d, dword [rsp + 0x44]
nop dword [rax + rax]
cmp qword [rbx + 0x10], 0
je 0x845e50
mov r8d, dword [r14 + 0xc]
mov rdx, qword [rsi + 8]
mov rcx, rbx
add rsi, 0x18
add r8d, r12d
add r12d, 1
call fcn.007b3fa0
cmp r12d, dword [r14 + 0x24]
jl 0x845d90
mov byte [r14], 0
test ebp, ebp
je 0x845c9e
mov eax, dword [rdi + 0x90]
lea edx, [rax - 1]
cmp ebp, edx
je 0x845c98
mov rcx, qword [rdi]
lea rdx, [0x00868dc0]
cmp byte [rcx + 0x67], 0
je 0x845fc0
mov dword [rdx + 8], eax
jmp 0x845c9e
mov r13d, dword [rbx + 0x2c]
sub eax, r14d
mov dword [rbx + 0x28], eax
lea edx, [r14 + r13]
mov dword [rbx + 0x2c], edx
jmp 0x845ab0
mov r15d, dword [rsp + 0xa8]
mov eax, dword [r14 + 0x24]
test r15d, r15d
jne 0x845fa8
mov rsi, qword [r14 + 0x18]
xor ebp, ebp
test eax, eax
jg 0x845d83
mov byte [r14], 0
jmp 0x845c9e
mov eax, dword [rbx + 0x38]
lea r13d, [rax + 1]
mov dword [rbx + 0x38], r13d
jmp 0x8458f7
add r12d, 1
add rsi, 0x18
cmp dword [r14 + 0x24], r12d
jg 0x845d90
jmp 0x845dbc
mov rdx, qword [rsp + 0x48]
mov r8d, ebp
call fcn.00774670
jmp 0x84581c
mov dword [rsp + 0x28], r15d
mov r9d, r12d
mov edx, 0x8a
mov rcx, rdi
mov dword [rsp + 0x20], r13d
mov dword [rsp + 0x30], r10d
call fcn.006d7e40
mov r10d, dword [rsp + 0x30]
jmp 0x845a23
mov dword [rsp + 0x20], r12d
mov r8d, r13d
mov rcx, rdi
mov r9d, r15d
mov edx, 0x61
mov dword [rsp + 0x30], r10d
call fcn.0074a520
mov r8d, dword [rsi + 0x18]
mov eax, dword [rdi + 0x90]
mov ecx, dword [rdi + 0x94]
mov r10d, dword [rsp + 0x30]
jmp 0x8459d7
mov r12, rax
jmp 0x845c08
call fcn.007ae1d0
jmp 0x845bd2
mov r11d, dword [rsp + 0x40]
test r11d, r11d
jne 0x845f27
mov eax, dword [rbx + 0x38]
add eax, 1
mov dword [rsp + 0x40], eax
mov dword [rbx + 0x38], eax
mov r9d, dword [rsp + 0x40]
mov r8d, dword [rsp + 0xa8]
mov edx, 0x50
mov rcx, rdi
call fcn.007ff390
jmp 0x845880
movzx eax, byte [rbx + 0x1f]
test al, al
je 0x845fe0
sub eax, 1
mov byte [rbx + 0x1f], al
movzx eax, al
mov r13d, dword [rbx + rax*4 + 0xe8]
jmp 0x845ab0
mov dword [rsp + 0x20], 0
mov edx, 0x7e
mov rcx, rdi
mov dword [rsp + 0x30], r11d
call fcn.0074a520
mov r11d, dword [rsp + 0x30]
mov r10d, dword [rsp + 0x3c]
jmp 0x845bb8
test eax, eax
je 0x845e25
mov eax, dword [rsp + 0xa8]
mov dword [rsp + 0x40], eax
jmp 0x845d5f
mov rdx, qword [rdi + 0x88]
lea rcx, [rbp + rbp*2]
lea rdx, [rdx + rcx*8]
mov dword [rdx + 8], eax
jmp 0x845c9e
mov eax, dword [rbx + 0x38]
lea r13d, [rax + 1]
mov dword [rbx + 0x38], r13d
jmp 0x845ab0
mov r8d, dword [rsp + 0x40]
mov edx, 0x55
xor r9d, r9d
mov rcx, rdi
mov dword [rsp + 0x20], 0
call fcn.0074a520
mov edx, eax
jmp 0x845c7c