Function at 0x854540
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, 0x388
mov r15, qword [rcx + 8]
mov rax, qword [rcx]
mov rdi, qword [rcx + 0x10]
mov r9, qword [r15 + 0x20]
mov qword [rsp + 0x3d8], rdx
mov r13, rcx
mov edx, dword [r15 + 0x14]
mov qword [rsp + 0xd0], 0
mov qword [rsp + 0xd8], 0
mov qword [rsp + 0xe0], 0
mov qword [rsp + 0xe8], 0
mov qword [rsp + 0xf0], 0
mov qword [rsp + 0xf8], 0
mov qword [rsp + 0x100], 0
mov rcx, qword [rax + 8]
movzx eax, byte [rdi + 0x10]
mov qword [rsp + 0x3e0], r8
lea r8, [rax + rax*2]
lea rax, [rax + r8*4]
lea rax, [rcx + rax*8 + 8]
mov qword [rsp + 0x28], rax
test byte [rax + 0x3c], 0x10
jne 0x854645
movsxd rax, edx
mov r12, qword [r15 + 0x20]
lea rdx, [rax*8]
sub rdx, rax
lea rbp, [r9 + rdx*8]
cmp rbp, r12
jbe 0x854645
mov rax, qword [rsp + 0x28]
mov qword [rsp + 0x38], r15
mov r14, r13
mov r15, rdi
mov r13, rbp
mov rbp, r12
mov eax, dword [rax + 0x44]
mov dword [rsp + 0x34], eax
test byte [rbp + 0x15], 2
je 0x85463c
mov rax, qword [rbp + 0x20]
mov rdx, qword [rax + 0x1e8]
test qword [r15 + 8], rdx
jne 0x854660
add rbp, 0x38
cmp r13, rbp
ja 0x854625
xor r14d, r14d
mov eax, r14d
add rsp, 0x388
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
movsxd rdx, dword [rax + 0x14]
mov rsi, qword [rax + 0x20]
movdqu xmm1, xmmword [r14 + 0x10]
movdqu xmm0, xmmword [r14]
lea rax, [rdx*8]
movdqu xmm2, xmmword [r14 + 0x20]
sub rax, rdx
movups xmmword [rsp + 0xa0], xmm1
lea rdi, [rsi + rax*8]
mov rax, qword [r14 + 0x30]
movups xmmword [rsp + 0x90], xmm0
mov qword [rsp + 0x40], rdi
mov qword [rsp + 0xc0], rax
lea rax, [rsp + 0x110]
mov qword [rsp + 0x60], rax
mov qword [rsp + 0xa8], rax
lea rax, [r15 + 0x18]
mov qword [rsp + 0x68], rax
movups xmmword [rsp + 0xb0], xmm2
cmp rsi, rdi
jae 0x854be1
xor edi, edi
mov dword [rsp + 0x50], 1
mov qword [rsp + 0x70], r13
mov qword [rsp + 0x78], r15
mov qword [rsp + 0x80], rbp
mov dword [rsp + 0x30], edi
mov qword [rsp + 0x3d0], r14
jmp 0x8547b7
mov rax, qword [rsi + 0x20]
mov qword [rsp + 0x98], rax
mov rax, qword [rsp + 0x28]
xor edi, edi
lea r12, [rsp + 0x90]
mov word [rsp + 0x110], di
mov rax, qword [rax + 0x20]
cmp byte [rax + 0x3f], 1
je 0x854820
mov rdx, qword [rsp + 0x3d8]
mov rcx, r12
call fcn.00851460
mov dword [rsp + 0x30], eax
mov ebx, dword [rsp + 0x30]
test ebx, ebx
je 0x854848
movzx r9d, word [rsp + 0x110]
test r9w, r9w
je 0x854bb2
mov r10d, dword [rsp + 0x50]
test r10d, r10d
je 0x854870
movzx r8d, r9w
lea rcx, [rsp + 0xd8]
lea rdx, [rsp + 0x118]
mov word [rsp + 0xd0], r9w
shl r8, 4
call sub.msvcrt.dll_memcpy
mov dword [rsp + 0x50], 0
add rsi, 0x38
cmp qword [rsp + 0x40], rsi
jbe 0x854ae8
test byte [rsi + 0x15], 4
jne 0x854708
mov eax, dword [rsp + 0x34]
cmp dword [rsi + 0x1c], eax
jne 0x8547a8
mov rdi, qword [rsp + 0x38]
mov rax, qword [rdi]
mov qword [rsp + 0x198], rdi
mov byte [rsp + 0x1a0], 0x2c
mov qword [rsp + 0x190], rax
lea rax, [rsp + 0x190]
mov dword [rsp + 0x1a4], 1
mov dword [rsp + 0x1ac], 1
mov qword [rsp + 0x1b0], rsi
mov qword [rsp + 0x98], rax
jmp 0x854714
mov r8, qword [rsp + 0x3e0]
mov rdx, qword [rsp + 0x3d8]
mov rcx, r12
call fcn.00854c40
mov dword [rsp + 0x30], eax
jmp 0x85474d
mov r8, qword [rsp + 0x3e0]
mov rdx, qword [rsp + 0x3d8]
mov rcx, r12
call fcn.00854540
mov dword [rsp + 0x30], eax
jmp 0x854759
movzx r8d, word [rsp + 0xd0]
lea rcx, [rsp + 0x158]
lea rdx, [rsp + 0xd8]
mov dword [rsp + 0x48], r9d
lea r13, [rsp + 0x150]
mov rdi, r8
shl r8, 4
call sub.msvcrt.dll_memcpy
xor r9d, r9d
mov word [rsp + 0xd0], r9w
test di, di
je 0x8547a8
lea eax, [rdi - 1]
mov qword [rsp + 0x88], rsi
mov r9d, dword [rsp + 0x48]
lea r14, [rsp + 0xd0]
shl rax, 4
lea rax, [rsp + rax + 0x160]
mov qword [rsp + 0x58], rax
test r9w, r9w
je 0x854ace
movsx r12d, word [r13 + 0x12]
mov rcx, qword [r13 + 8]
mov qword [rsp + 0x48], r13
xor esi, esi
movsx r15d, word [r13 + 0x10]
mov rbx, qword [rsp + 0x60]
mov r13, r14
lea eax, [r12 + 1]
mov edi, r12d
cwde
mov ebp, r15d
mov r14d, r15d
mov r15d, r12d
mov dword [rsp + 0x54], eax
mov r12, rcx
movsx r9d, word [rbx + 0x12]
mov eax, r9d
cmp r9w, di
jg 0x854a00
lea eax, [r9 + 0x31]
cmp eax, r15d
jl 0x854a40
lea eax, [r9 + 0x1f]
cmp eax, r15d
jge 0x854a50
mov r9d, dword [rsp + 0x54]
nop dword [rax]
movsx r8d, word [rbx + 0x10]
mov eax, r8d
cmp r8w, bp
jg 0x8549e0
lea eax, [r8 + 0x31]
cmp eax, r14d
jl 0x854a30
lea eax, [r8 + 0x1f]
cmp eax, r14d
jge 0x854a90
lea r8d, [rbp + 1]
movsx r8d, r8w
nop dword [rax + rax]
mov rdx, qword [rbx + 8]
mov rcx, r13
add esi, 1
add rbx, 0x10
or rdx, r12
call fcn.00856f90
movzx eax, word [rsp + 0x110]
mov r9d, eax
cmp eax, esi
jg 0x854920
mov r14, r13
mov r13, qword [rsp + 0x48]
add r13, 0x10
cmp qword [rsp + 0x58], r13
jne 0x8548e0
mov rsi, qword [rsp + 0x88]
jmp 0x8547a8
lea edx, [r14 + 0x31]
cmp r8d, edx
jg 0x854990
lea edx, [r14 + 0x1f]
cmp r8d, edx
jle 0x854a70
lea r8d, [r8 + 1]
movsx r8d, r8w
jmp 0x854990
lea edx, [r15 + 0x31]
cmp r9d, edx
jg 0x854958
lea edx, [r15 + 0x1f]
cmp r9d, edx
jle 0x854ab0
lea r9d, [r9 + 1]
movsx r9d, r9w
jmp 0x854958
mov r8d, r14d
jmp 0x854990
mov r9d, r15d
jmp 0x854958
mov eax, r15d
lea rcx, str._n_n_t_t_b_b_a_a_a
sub eax, r9d
cdqe
movzx r9d, byte [rcx + rax]
add r9d, edi
movsx r9d, r9w
jmp 0x854958
sub r8d, r14d
lea rcx, str._n_n_t_t_b_b_a_a_a
movsxd r8, r8d
movzx r8d, byte [rcx + r8]
add r8d, eax
movsx r8d, r8w
jmp 0x854990
mov eax, r14d
lea rcx, str._n_n_t_t_b_b_a_a_a
sub eax, r8d
cdqe
movzx r8d, byte [rcx + rax]
add r8d, ebp
movsx r8d, r8w
jmp 0x854990
sub r9d, r15d
lea rcx, str._n_n_t_t_b_b_a_a_a
movsxd r9, r9d
movzx r9d, byte [rcx + r9]
add r9d, eax
movsx r9d, r9w
jmp 0x854958
add r13, 0x10
cmp r13, qword [rsp + 0x58]
jne 0x8549c1
jmp 0x8549d0
mov r13, qword [rsp + 0x70]
mov r15, qword [rsp + 0x78]
mov rbp, qword [rsp + 0x80]
mov edi, dword [rsp + 0x30]
mov r14, qword [rsp + 0x3d0]
mov rax, qword [r15 + 0x48]
mov ecx, 1
xor r8d, r8d
mov word [r15 + 0x3c], cx
mov qword [rax], rbp
mov rax, qword [rsp + 0x68]
mov dword [r15 + 0x38], 0x2000
mov word [r15 + 0x12], r8w
mov byte [r15 + 0x11], 0
mov qword [r15 + 0x18], 0
mov qword [r15 + 0x20], 0
mov qword [rax + 0x10], 0
mov qword [rax + 0x18], 0
test edi, edi
jne 0x854c30
lea rbx, [rsp + 0xd0]
xor esi, esi
nop dword [rax + rax]
movzx eax, word [rsp + 0xd0]
cmp esi, eax
jge 0x85463c
movzx eax, word [rbx + 0x10]
mov rdx, r15
mov rcx, r14
add esi, 1
add rbx, 0x10
add eax, 1
mov word [r15 + 0x14], ax
movzx eax, word [rbx + 2]
mov word [r15 + 0x16], ax
mov rax, qword [rbx - 8]
mov qword [r15], rax
call fcn.00856280
test eax, eax
je 0x854b68
mov r14d, eax
jmp 0x854648
xor r11d, r11d
mov r13, qword [rsp + 0x70]
mov edi, dword [rsp + 0x30]
mov word [rsp + 0xd0], r11w
mov r15, qword [rsp + 0x78]
mov rbp, qword [rsp + 0x80]
mov r14, qword [rsp + 0x3d0]
jmp 0x854b06
mov eax, 1
xor edx, edx
mov word [r15 + 0x3c], ax
mov rax, qword [r15 + 0x48]
mov qword [rax], rbp
mov rax, qword [rsp + 0x68]
mov dword [r15 + 0x38], 0x2000
mov word [r15 + 0x12], dx
mov byte [r15 + 0x11], 0
mov qword [r15 + 0x18], 0
mov qword [r15 + 0x20], 0
mov qword [rax + 0x10], 0
mov qword [rax + 0x18], 0
jmp 0x854b59
mov r14d, edi
jmp 0x854648