Function at 0x563570
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, 0x358
mov rax, qword [rcx + 0x2f0]
cmp qword [rcx + 0x2e8], rax
mov rsi, rcx
mov dword [rsp + 0x3a8], edx
mov qword [rsp + 0x3b0], r8
je 0x563bd6
movzx eax, byte [rcx + 0x5b0]
test al, 1
je 0x563bf0
mov dword [rsp + 0x3a8], 3
lea r13, [rsp + 0x1b0]
mov rax, 0xffffffffffffffff
xor r9d, r9d
mov qword [rsp + 0x1b4], 0
mov qword [rsp + 0x1f0], rax
lea rcx, [r13 + 0xa8]
mov qword [r13 + 0xc], 0
mov dword [r13 + 0x14], 0
mov qword [rsp + 0x1c8], 0
mov dword [r13 + 0x28], 0
mov qword [r13 + 0x20], 0
mov qword [rsp + 0x1e8], rax
mov qword [rsp + 0x1e0], rax
lea rax, [r13 + 0x70]
mov qword [rsp + 0x210], rax
lea rax, [r13 + 0x90]
mov dword [rsp + 0x1b0], 0
mov qword [rsp + 0x1f8], 0
mov qword [rsp + 0x200], 0
mov word [rsp + 0x208], r9w
mov dword [rsp + 0x20c], 0
mov qword [rsp + 0x218], 0
mov byte [rsp + 0x220], 0
mov qword [rsp + 0x230], rax
mov qword [rsp + 0x238], 0
mov byte [rsp + 0x240], 0
mov dword [rsp + 0x250], 0
mov dword [rsp + 0x254], 0
call fcn.00503cb0
test byte [rsi + 0x59c], 0x40
mov byte [rsp + 0x274], 1
mov rdx, qword [rsi + 0x290]
jne 0x563c40
xor eax, eax
mov rcx, qword [rsi + 0xe0]
mov byte [rsp + 0x275], al
mov r8d, dword [rsi + 0x55c]
mov r9, qword [rsi + 0x1b0]
mov rax, qword [rcx + 0x1b0]
mov qword [rsp + 0x1f8], r8
mov qword [rsp + 0x1e8], r9
mov qword [rsp + 0x1b4], rax
mov rax, qword [rcx + 0x1b8]
mov qword [rsp + 0x1bc], rax
mov eax, dword [rcx + 0x1c0]
mov dword [rsp + 0x1c4], eax
mov rax, qword [rdx + 0xe38]
mov qword [rsp + 0x1c8], rax
mov rax, qword [rdx + 0xe40]
mov qword [rsp + 0x1d0], rax
mov eax, dword [rdx + 0xe48]
mov dword [rsp + 0x1d8], eax
mov rax, qword [rsi + 0x1e0]
sub rax, r8
mov r8d, dword [rcx + 0xc4]
mov qword [rsp + 0x1e0], rax
test r8d, r8d
jle 0x563c63
mov rbx, qword [rcx + 0xb8]
mov rcx, rsi
call fcn.0054d030
sub rbx, rax
cmp rbx, 0xffffffffffffffff
mov qword [rsp + 0x1f0], rbx
je 0x563c54
mov rax, qword [rsp + 0x1e0]
mov rdx, qword [rsi + 0x290]
cmp byte [rdx + 0x259], 0
jne 0x5637d0
mov edx, dword [rsi + 0x560]
sub rax, rdx
mov qword [rsp + 0x1e0], rax
test rax, rax
js 0x564074
mov eax, dword [rsp + 0x3a8]
mov dword [rsp + 0x20c], eax
call fcn.004d6fb0
xor eax, eax
cmp dword [rsp + 0x20c], 3
mov rcx, qword [rsi + 0x290]
je 0x563805
mov eax, dword [rcx + 0x130]
mov dword [rsp + 0x254], eax
call fcn.00526cd0
mov word [rsp + 0x208], ax
mov rax, qword [rsi + 0x290]
mov eax, dword [rax + 0xe4c]
test eax, eax
je 0x564067
mov dword [rsp + 0x250], eax
call fcn.00591b80
mov qword [rsp + 0x40], rax
mov rbx, qword [rsi + 0x2e8]
mov rax, qword [rsi + 0x2f0]
sub rax, rbx
sar rax, 4
imul eax, eax, 0x38e38e39
test eax, eax
jle 0x563bc0
mov rax, qword [0x008281f0]
xor edi, edi
xor ebp, ebp
xor r12d, r12d
mov dword [rsp + 0x3c], 0x7fffffff
add rax, 0x10
mov qword [rsp + 0x50], rax
mov rax, qword [0x008280f0]
add rax, 0x10
mov qword [rsp + 0x58], rax
jmp 0x5638ed
cmp r12b, byte [rax + 0x1ed]
movzx eax, byte [rbx + 0x8c]
jbe 0x56393a
mov ecx, dword [rsp + 0x3c]
cmp eax, ecx
jg 0x56393a
cmp ecx, 0x7fffffff
je 0x56393a
nop dword [rax + rax]
mov rbx, qword [rsi + 0x2e8]
add ebp, 1
add rdi, 0x90
mov rax, qword [rsi + 0x2f0]
sub rax, rbx
sar rax, 4
imul eax, eax, 0x38e38e39
cmp eax, ebp
jle 0x563bc0
lea rax, [rsi + 0x350]
add rbx, rdi
cmp qword [rbx + 0x28], 0
lea rdx, [rbx + 0x20]
lea rcx, [r13 + 0x80]
cmove rdx, rax
call fcn.0079ceb0
mov rax, qword [rsi + 0x290]
cmp byte [rax + 0x1ee], 0
jne 0x563893
movzx eax, byte [rbx + 0x8c]
cmp eax, dword [rsp + 0x3c]
jle 0x56393a
test r12b, r12b
jne 0x563bc0
test byte [rbx + 0x8e], 0x7f
jne 0x56394a
mov dword [rsp + 0x3c], eax
xor r12d, r12d
mov rcx, rsi
call fcn.00709c40
mov rdx, qword [rsp + 0x40]
mov rcx, rbx
movzx r8d, al
call fcn.00589b00
test al, al
mov r15d, eax
jne 0x563c74
test byte [rbx + 0x8e], 0x7f
mov eax, 1
cmove r12d, eax
jmp 0x5638c0
mov rcx, qword [rsp + 0x280]
add r14, 0x10
cmp rcx, r14
je 0x5639a0
call fcn.007da050
nop dword [rax]
lea rdx, [rsi + 0x20]
lea rcx, [rsp + 0x88]
call fcn.006f3340
mov rax, qword [rsi + 0x18]
mov qword [rsp + 0x80], rax
mov qword [rsp + 0x160], rax
mov rax, qword [rsp + 0x88]
test rax, rax
mov qword [rsp + 0x168], rax
je 0x5639de
lock inc dword [rax + 0xc]
lea r12, [rsp + 0xa0]
mov rdx, rsi
mov rcx, r12
call fcn.0054d490
lea r14, [rsp + 0x280]
mov rdx, r13
mov rcx, r14
call fcn.006a25c0
mov rax, qword [rsi + 0x290]
lea r10, [rsp + 0x160]
mov qword [rsp + 0x20], r12
mov r9, r14
mov qword [rsp + 0x28], r10
mov qword [rsp + 0x48], r10
lea rdx, [rax + 0x418]
lea rcx, [rax + 0xc80]
lea r8, [rax + 0xaf0]
call fcn.00593420
mov rcx, qword [rsp + 0x300]
lea rax, [r14 + 0x90]
cmp rcx, rax
je 0x563a58
call fcn.007da050
mov rcx, qword [rsp + 0x2e0]
add r14, 0x70
cmp rcx, r14
je 0x563a6e
call fcn.007da050
mov rcx, qword [rsp + 0xa0]
add r12, 0x10
cmp rcx, r12
je 0x563a84
call fcn.007da050
mov rcx, qword [rsp + 0x168]
test rcx, rcx
je 0x563aa4
mov eax, 0xffffffff
lock xadd dword [rcx + 0xc], eax
cmp eax, 1
je 0x563fb0
mov rcx, qword [rsp + 0x88]
test rcx, rcx
je 0x563ac4
mov eax, 0xffffffff
lock xadd dword [rcx + 8], eax
cmp eax, 1
je 0x563fc0
or byte [rbx + 0x8e], 0x80
mov ecx, 0x14
call fcn.00591d80
mov r14, qword [rsp + 0x40]
mov ecx, 0xa
add rax, r14
mov qword [rbx + 0x70], rax
call fcn.00591d80
add rax, r14
mov qword [rbx + 0x78], rax
mov r12, qword [rsi + 0x290]
lea r14, [r12 + 0x480]
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
mov rdx, qword [r12 + 0x478]
sub rdx, qword [r12 + 0x458]
mov rax, qword [r12 + 0x460]
sub rax, qword [r12 + 0x468]
sar rdx, 3
sub rdx, 1
sar rax, 3
shl rdx, 6
lea rdx, [rdx + rax]
mov rax, qword [r12 + 0x450]
sub rax, qword [r12 + 0x440]
sar rax, 3
add rax, rdx
cmp rax, qword [r12 + 0x4e8]
jae 0x563ee0
mov r12d, dword [r12 + 0x4e0]
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
and r12d, 0x10
test r12d, r12d
jne 0x563f20
test byte [rbx + 0x8e], 0x7f
jne 0x563de4
mov rax, qword [rsi + 0x290]
movzx r12d, byte [rax + 0x1ed]
test r12b, r12b
jne 0x5638c0
movzx r12d, byte [rax + 0x1ee]
test r12b, r12b
jne 0x5638c0
nop word [rax + rax]
mov rdx, qword [rsp + 0x40]
mov rcx, rsi
call fcn.0055f040
mov rcx, r13
call fcn.006a2700
nop
add rsp, 0x358
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
cmp edx, 3
je 0x5635c3
test al, 4
je 0x563bd6
test al, 0x10
je 0x563bd6
test edx, edx
jne 0x5635c3
call fcn.00709a50
test al, al
je 0x5635c3
mov rcx, rsi
call fcn.00709c40
test al, al
mov eax, 4
cmovne eax, dword [rsp + 0x3a8]
mov dword [rsp + 0x3a8], eax
jmp 0x5635c3
movzx eax, byte [rdx + 0x2de]
test al, al
jne 0x5636df
jmp 0x5636dd
mov rdx, qword [rsi + 0x290]
mov rax, qword [rsp + 0x1e0]
mov qword [rsp + 0x1f0], 0x4000
jmp 0x5637b6
lea rcx, [r13 + 0x60]
mov rdx, rbx
call fcn.0079ceb0
mov eax, dword [rsp + 0x3a8]
test eax, eax
mov dword [rsp + 0x20c], eax
jne 0x563cac
movzx eax, byte [rbx + 0x8f]
test al, 0x20
jne 0x563ef0
mov dword [rsp + 0x20c], 2
mov rcx, qword [rsp + 0x3b0]
call fcn.005c3860
test al, al
jne 0x563db2
mov rdx, qword [rsp + 0x3b0]
lea rcx, [r13 + 0xa8]
call fcn.00503d70
mov rax, qword [rsi + 0x290]
cmp byte [rax + 0x267], 0
je 0x5639a0
lea rcx, [r13 + 0x60]
xor r8d, r8d
mov edx, 0x3a
call fcn.00715e60
mov r8, qword [rsp + 0x218]
lea r14, [rsp + 0x280]
lea rdx, [r14 + 0x10]
mov rcx, r14
mov qword [rsp + 0x280], rdx
mov rdx, qword [rsp + 0x210]
cmp rax, r8
cmovbe r8, rax
add r8, rdx
call fcn.0054b7e0
mov rax, qword [rsi + 0x290]
lea rdx, [0x008181e3]
mov rcx, r14
movzx eax, byte [rax + 0xf38]
mov dword [rsp + 0x48], eax
call fcn.007160d0
test eax, eax
jne 0x563df0
mov eax, dword [rsp + 0x48]
test eax, eax
jne 0x563e07
mov ecx, 0xa
call fcn.00591df0
add rax, qword [rsp + 0x40]
mov qword [rbx + 0x70], rax
mov rax, qword [rsi + 0x290]
lea rcx, [rax + 0x430]
call fcn.00704d50
test al, al
jne 0x563fd0
mov rcx, qword [rsp + 0x280]
add r14, 0x10
cmp rcx, r14
je 0x5638c0
call fcn.007da050
jmp 0x5638c0
mov rax, qword [rsi + 0x290]
lea r14, [rsp + 0x280]
mov rcx, r14
lea rdx, [rax + 0xe54]
call fcn.00504e40
lea rcx, [r13 + 0xa8]
mov rdx, r14
call fcn.00503da0
jmp 0x563cd5
mov r12d, r15d
jmp 0x5638c0
lea rdx, [0x008181e8]
mov rcx, r14
call fcn.007160d0
test eax, eax
je 0x563d59
lea rdx, [0x008181ee]
mov rcx, r14
call fcn.007160d0
test eax, eax
jne 0x563983
mov ecx, dword [rsp + 0x48]
mov eax, ecx
sub eax, 2
cmp eax, 1
jbe 0x563983
cmp ecx, 6
je 0x563983
mov ecx, 0xa
call fcn.00591df0
add rax, qword [rsp + 0x40]
mov qword [rbx + 0x70], rax
mov rax, qword [rsi + 0x290]
lea rcx, [rax + 0x430]
call fcn.00704d50
test al, al
je 0x563d93
lea r15, [rsp + 0x70]
mov rdx, rsi
mov rcx, r15
call fcn.0054f2a0
lea rbx, [rsp + 0x110]
xor r8d, r8d
mov rdx, r15
lea r9, [r13 + 0x60]
mov rcx, rbx
call fcn.005efac0
mov rax, qword [rsi + 0x290]
mov rdx, rbx
lea rcx, [rax + 0x430]
call fcn.005f3af0
mov rcx, rbx
call fcn.006a6170
mov rcx, qword [rsp + 0x78]
test rcx, rcx
je 0x563d93
mov eax, 0xffffffff
lock xadd dword [rcx + 0xc], eax
cmp eax, 1
jne 0x563d93
mov rax, qword [rcx]
call qword [rax + 0x18]
jmp 0x563d93
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
jmp 0x563b81
test al, 0x40
jne 0x563cac
mov rcx, rsi
call fcn.00709c40
test al, al
je 0x563cac
mov dword [rsp + 0x20c], 1
jmp 0x563cac
lea r12, [rsp + 0x90]
mov rdx, rsi
mov r14d, dword [rsp + 0x20c]
mov rcx, r12
call fcn.0054f2a0
lea r8, [r13 + 0x60]
mov r9d, r14d
mov r14, qword [rsp + 0x48]
mov rdx, r12
mov rcx, r14
call fcn.005eea10
mov rax, qword [rsi + 0x290]
mov rdx, r14
lea rcx, [rax + 0x430]
call fcn.005f3af0
mov rax, qword [rsp + 0x50]
mov rcx, r14
mov qword [rsp + 0x160], rax
call fcn.006a0e10
mov rcx, qword [rsp + 0x98]
test rcx, rcx
je 0x563b81
mov eax, 0xffffffff
lock xadd dword [rcx + 0xc], eax
cmp eax, 1
jne 0x563b81
mov rax, qword [rcx]
call qword [rax + 0x18]
jmp 0x563b81
mov rax, qword [rcx]
call qword [rax + 0x18]
jmp 0x563aa4
call fcn.0054bce0
jmp 0x563ac4
lea rbx, [rsp + 0x60]
mov rdx, rsi
mov rcx, rbx
call fcn.0054f2a0
lea r15, [rsp + 0xc0]
xor r8d, r8d
mov rdx, rbx
lea r9, [r13 + 0x60]
mov rcx, r15
call fcn.005efac0
mov rax, qword [rsi + 0x290]
mov rdx, r15
lea rcx, [rax + 0x430]
call fcn.005f3af0
mov rax, qword [rsp + 0x58]
mov rcx, qword [rsp + 0xe8]
mov qword [rsp + 0xc0], rax
lea rax, [r15 + 0x38]
cmp rcx, rax
je 0x564033
call fcn.007da050
mov rcx, r15
call fcn.006a0db0
mov rcx, qword [rsp + 0x68]
test rcx, rcx
je 0x563d93
mov eax, 0xffffffff
lock xadd dword [rcx + 0xc], eax
cmp eax, 1
jne 0x563d93
mov rax, qword [rcx]
call qword [rax + 0x18]
jmp 0x563d93
mov rcx, rsi
call fcn.0054d9b0
jmp 0x56382e
mov qword [rsp + 0x1e0], 0
jmp 0x5637d9