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

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x68
mov esi, r9d
mov dword [rsp + 0x4c], r8d
mov rdi, qword [rcx]
mov rbx, qword [rcx + 0x10]
mov qword [rsp + 0x58], rdx
mov r14, qword [rdx + 0x60]
movzx r15d, word [r14 + 0x18]
movzx ebp, word [r14 + 0x3e]
mov r12d, dword [rcx + 0x38]
mov rdx, qword [r14 + 0x20]
add esi, r15d
lea eax, [r12 + rsi]
mov qword [rsp + 0x40], rcx
mov dword [rcx + 0x38], eax
mov rcx, rdi
call fcn.00506680
test rax, rax
mov dword [rsp + 0x3c], ebp
mov qword [rsp + 0x60], rsi
je 0x505e4c
mov r13, rax
mov rcx, rax
call fcn.005f4bd8
mov rbp, rax
add rbp, 1
test rdi, rdi
je 0x505e62
mov rcx, rdi
mov rdx, rbp
call fcn.00429840
test rax, rax
je 0x505e6f
mov rcx, rax
mov qword [rsp + 0x50], rax
mov rdx, r13
mov r8, rbp
call fcn.005f4c20
mov ebp, dword [rsp + 0x3c]
lea esi, [r12 + 1]
test bp, bp
jne 0x505e88
jmp 0x50613d
xor eax, eax
mov qword [rsp + 0x50], rax
lea esi, [r12 + 1]
test bp, bp
jne 0x505e88
jmp 0x50613d
mov rcx, rbp
call fcn.00404550
test rax, rax
jne 0x505e26
xor eax, eax
mov qword [rsp + 0x50], rax
mov ebp, dword [rsp + 0x3c]
lea esi, [r12 + 1]
test bp, bp
je 0x50613d
mov rax, qword [rsp + 0x58]
mov r13d, dword [rax + 8]
add r12d, dword [rsp + 0x3c]
movsxd rax, dword [rbx + 0x90]
cmp dword [rbx + 0x94], eax
jle 0x505ed5
lea ecx, [rax + 1]
mov dword [rbx + 0x90], ecx
mov rcx, qword [rbx + 0x88]
lea rax, [rax + rax*2]
mov qword [rcx + rax*8], 0x4b
mov dword [rcx + rax*8 + 8], esi
mov dword [rcx + rax*8 + 0xc], r12d
mov qword [rcx + rax*8 + 0x10], 0
jmp 0x505eed
mov dword [rsp + 0x20], r12d
mov rcx, rbx
mov edx, 0x4b
xor r8d, r8d
mov r9d, esi
call fcn.0047df60
xor eax, eax
cmp dword [rsp + 0x4c], 0
sete al
lea edx, [rax*4 + 0x1f]
movsxd rax, dword [rbx + 0x90]
cmp dword [rbx + 0x94], eax
jle 0x505f6a
lea ecx, [rax + 1]
mov dword [rbx + 0x90], ecx
mov rcx, qword [rbx + 0x88]
lea rax, [rax + rax*2]
mov byte [rcx + rax*8], dl
mov word [rcx + rax*8 + 2], 0
mov dword [rcx + rax*8 + 4], r13d
mov byte [rcx + rax*8 + 1], 0
xorps xmm0, xmm0
movups xmmword [rcx + rax*8 + 8], xmm0
mov ebp, dword [rbx + 0x90]
cmp dword [rbx + 0x94], ebp
jg 0x505f8e
mov dword [rsp + 0x20], 0
mov rcx, rbx
mov edx, 8
xor r8d, r8d
xor r9d, r9d
call fcn.0047df60
mov ebp, eax
jmp 0x505fba
mov dword [rsp + 0x20], 0
mov rcx, rbx
mov r8d, r13d
xor r9d, r9d
call fcn.0047df60
mov ebp, dword [rbx + 0x90]
cmp dword [rbx + 0x94], ebp
jle 0x505f4b
movsxd rax, ebp
lea ecx, [rax + 1]
mov dword [rbx + 0x90], ecx
mov rcx, qword [rbx + 0x88]
lea rax, [rax + rax*2]
mov byte [rcx + rax*8], 8
xorps xmm0, xmm0
movups xmmword [rcx + rax*8 + 1], xmm0
mov qword [rcx + rax*8 + 0x10], 0
xor eax, eax
cmp dword [rsp + 0x4c], 0
sete al
lea edx, [rax + rax*2]
add edx, 0x14
mov eax, dword [rbx + 0x90]
cmp dword [rbx + 0x94], eax
jle 0x506038
movsxd rcx, eax
lea edi, [rcx + 1]
mov dword [rbx + 0x90], edi
mov rdi, qword [rbx + 0x88]
lea rcx, [rcx + rcx*2]
mov byte [rdi + rcx*8], dl
mov word [rdi + rcx*8 + 2], 0
mov dword [rdi + rcx*8 + 4], r13d
mov dword [rdi + rcx*8 + 8], 0
mov dword [rdi + rcx*8 + 0xc], esi
mov qword [rdi + rcx*8 + 0x10], 0
mov byte [rdi + rcx*8 + 1], 0
mov rcx, qword [rbx]
cmp byte [rcx + 0x67], 0
je 0x506053
mov rcx, qword [rsp + 0x58]
mov dword [rcx + 0x14], eax
mov eax, dword [rbx + 0x90]
lea rcx, [0x0213b3e8]
jmp 0x5060a8
mov dword [rsp + 0x20], esi
mov rcx, rbx
mov r8d, r13d
xor r9d, r9d
call fcn.0047df60
mov rcx, qword [rbx]
cmp byte [rcx + 0x67], 0
jne 0x506021
mov rcx, qword [rbx + 0x88]
movsxd rdx, eax
lea rdx, [rdx + rdx*2]
mov byte [rcx + rdx*8 + 1], 0xfd
mov edi, dword [rsp + 0x3c]
mov dword [rcx + rdx*8 + 0x10], edi
mov rcx, qword [rbx]
cmp byte [rcx + 0x67], 0
mov rcx, qword [rsp + 0x58]
mov dword [rcx + 0x14], eax
mov eax, dword [rbx + 0x90]
je 0x50608e
lea rcx, [0x0213b3e8]
jmp 0x5060a8
lea ecx, [rax - 1]
test ebp, ebp
cmovns ecx, ebp
movsxd rcx, ecx
lea rcx, [rcx + rcx*2]
shl rcx, 3
add rcx, qword [rbx + 0x88]
mov edx, dword [rsp + 0x3c]
cmp edx, 1
mov edi, 1
cmova edi, edx
mov dword [rcx + 8], eax
add edi, 0xffffffff
xor ebp, ebp
lea ecx, [rsi + rbp]
cmp dword [rbx + 0x94], eax
jg 0x5060f0
nop
mov dword [rsp + 0x20], ecx
mov rcx, rbx
mov edx, 0x5e
mov r8d, r13d
mov r9d, ebp
call fcn.0047df60
cmp edi, ebp
jne 0x506127
jmp 0x50613d
lea edx, [rax + 1]
mov dword [rbx + 0x90], edx
mov rdx, qword [rbx + 0x88]
cdqe
lea rax, [rax + rax*2]
mov dword [rdx + rax*8], 0x5e
mov dword [rdx + rax*8 + 4], r13d
mov dword [rdx + rax*8 + 8], ebp
mov dword [rdx + rax*8 + 0xc], ecx
mov qword [rdx + rax*8 + 0x10], 0
cmp edi, ebp
je 0x50613d
add ebp, 1
mov eax, dword [rbx + 0x90]
lea ecx, [rsi + rbp]
cmp dword [rbx + 0x94], eax
jle 0x5060d0
jmp 0x5060f0
mov rcx, qword [rsp + 0xd0]
mov eax, dword [rsp + 0x3c]
cmp ax, r15w
jae 0x506597
mov r12d, eax
cmp dword [rsp + 0x60], 1
jne 0x5061df
mov rbp, r12
mov rcx, qword [rsp + 0x40]
jmp 0x506188
mov r13d, esi
mov rcx, qword [rsp + 0x40]
add rbp, 1
mov esi, r13d
cmp r15, rbp
je 0x50628a
mov rax, qword [r14 + 0x48]
mov rdx, qword [rax + rbp*8]
lea edi, [rsi + rbp]
mov dword [rsp + 0x28], edi
mov eax, dword [rsp + 0x4c]
mov dword [rsp + 0x20], eax
mov r8, qword [rsp + 0x58]
mov r9d, ebp
call fcn.005045f0
cmp edi, eax
je 0x506170
mov r13d, eax
test esi, esi
je 0x506173
mov rcx, qword [rsp + 0x40]
movzx eax, byte [rcx + 0x1f]
cmp rax, 7
ja 0x506178
lea ecx, [rax + 1]
mov rdx, qword [rsp + 0x40]
mov byte [rdx + 0x1f], cl
mov rcx, qword [rsp + 0x40]
mov dword [rcx + rax*4 + 0xd8], esi
jmp 0x506178
mov r13d, esi
mov rdi, r12
mov rcx, qword [rsp + 0x40]
jmp 0x506232
lea edx, [rcx + 1]
mov dword [rbx + 0x90], edx
mov rdx, qword [rbx + 0x88]
lea rcx, [rcx + rcx*2]
mov dword [rdx + rcx*8], 0x50
mov dword [rdx + rcx*8 + 4], eax
mov dword [rdx + rcx*8 + 8], ebp
mov dword [rdx + rcx*8 + 0xc], 0
mov qword [rdx + rcx*8 + 0x10], 0
add rdi, 1
cmp r15, rdi
mov rcx, qword [rsp + 0x40]
je 0x506287
mov rax, qword [r14 + 0x48]
mov rdx, qword [rax + rdi*8]
lea rbp, [rdi + r13]
mov dword [rsp + 0x28], ebp
mov eax, dword [rsp + 0x4c]
mov dword [rsp + 0x20], eax
mov r8, qword [rsp + 0x58]
mov r9d, edi
call fcn.005045f0
cmp ebp, eax
je 0x506224
movsxd rcx, dword [rbx + 0x90]
cmp dword [rbx + 0x94], ecx
jg 0x5061f0
mov dword [rsp + 0x20], 0
mov rcx, rbx
mov edx, 0x50
mov r8d, eax
mov r9d, ebp
call fcn.0047df60
jmp 0x506224
mov r13d, esi
mov r10b, 1
mov edi, 0x1000
mov ebp, 1
jmp 0x5062b9
mov edx, ecx
xor edx, 0xfeff
test edx, ecx
je 0x5062f4
add r12, 1
cmp r12, r15
je 0x50658c
mov rax, qword [r14 + 0x48]
mov rax, qword [rax + r12*8]
movzx ecx, word [rax + 0x14]
mov edx, ecx
xor edx, 0xfffe
test edx, ecx
je 0x5062a0
cmp qword [rsp + 0x50], 0
je 0x5062ac
mov rax, qword [rax]
mov eax, dword [rax + 4]
and eax, edi
je 0x5062ac
test r10b, r10b
je 0x5062ac
mov rax, qword [rsp + 0x50]
mov byte [rax + r12], 0x41
jmp 0x5062ac
mov rcx, qword [rax]
mov rsi, qword [rcx + 0x18]
movzx eax, word [rax + 0x12]
not eax
or eax, 0xf7ff
cmp ax, 0xffff
je 0x506366
mov rax, qword [rsp + 0x40]
cmp dword [rax + 0x30], 0
jne 0x5062ac
mov rax, qword [rsp + 0x50]
mov dil, byte [rax + r12]
mov rcx, rsi
call fcn.004ce540
cmp al, 0x41
setl cl
cmp dil, 0x40
setg dl
cmp dl, cl
je 0x5063ae
cmp dil, 0x41
jl 0x5063ae
cmp al, 0x42
setg al
cmp dil, 0x42
setg cl
test cl, al
jne 0x5063c6
xor cl, al
jne 0x5063c6
mov rax, qword [rsp + 0x50]
mov byte [rax + r12], 0x41
mov r10b, 1
mov edi, 0x1000
jmp 0x5062e8
mov cl, byte [rsi]
lea edx, [rcx + 0x53]
mov rax, rsi
cmp dl, 1
ja 0x50638f
mov rax, rsi
nop word [rax + rax]
mov rax, qword [rax + 0x10]
movzx ecx, byte [rax]
lea edx, [rcx + 0x53]
cmp dl, 2
jb 0x506380
cmp cl, 0xb0
jne 0x506397
mov cl, byte [rax + 2]
cmp cl, 0x99
jae 0x506432
cmp cl, 0x75
je 0x50630c
jmp 0x506458
cmp al, 0x41
movzx ecx, dil
movzx eax, al
cmovl eax, ecx
mov ecx, eax
xor cl, 0x40
and cl, al
cmp cl, 1
je 0x506352
cmp dil, 0x41
mov r10b, 1
mov r8d, edi
mov edi, 0x1000
je 0x5062e8
mov al, byte [rsi]
lea edx, [rax + 0x53]
xor ecx, ecx
cmp dl, 1
ja 0x506404
xor ecx, ecx
nop dword [rax]
cmp al, 0xad
cmove ecx, ebp
mov rsi, qword [rsi + 0x10]
movzx eax, byte [rsi]
lea edx, [rax + 0x53]
cmp dl, 2
jb 0x5063f0
cmp al, 0xb0
jne 0x50640b
mov al, byte [rsi + 2]
cmp al, 0x9a
jae 0x5064d1
cmp al, 0x75
je 0x50653d
cmp al, 0x99
jne 0x5062ac
cmp r8b, 0x42
jle 0x5062ac
jmp 0x5062e8
cmp cl, 0xa7
jae 0x506442
cmp cl, 0x9c
jb 0x50630c
jmp 0x506458
jne 0x506458
mov ecx, dword [rax + 4]
not ecx
or ecx, 0xffdfffff
cmp ecx, 0xffffffff
je 0x5064fb
lea r8d, [r12 + r13]
mov rax, qword [rsp + 0x58]
mov r9d, dword [rax + 0xc]
movsxd rax, dword [rbx + 0x90]
cmp dword [rbx + 0x94], eax
jle 0x5064af
lea ecx, [rax + 1]
mov dword [rbx + 0x90], ecx
mov rcx, qword [rbx + 0x88]
lea rax, [rax + rax*2]
mov dword [rcx + rax*8], 0x32
mov dword [rcx + rax*8 + 4], r8d
mov dword [rcx + rax*8 + 8], r9d
mov dword [rcx + rax*8 + 0xc], 0
mov qword [rcx + rax*8 + 0x10], 0
jmp 0x50630c
mov dword [rsp + 0x20], 0
mov rcx, rbx
mov edx, 0x32
call fcn.0047df60
mov edi, 0x1000
mov r10b, 1
jmp 0x50630c
jne 0x5064e0
test ecx, ecx
jne 0x5062ac
jmp 0x5062e8
cmp al, 0xa7
jae 0x506560
cmp r8b, 0x43
jl 0x5062ac
cmp al, 0x9b
je 0x5062e3
jmp 0x5062ac
mov rcx, qword [rax + 0x40]
test rcx, rcx
je 0x506458
movzx eax, word [rax + 0x30]
test ax, ax
js 0x50630c
mov rcx, qword [rcx + 8]
test rcx, rcx
je 0x50630c
lea rax, [rax + rax*2]
mov eax, dword [rcx + rax*8 + 8]
not eax
or eax, 0xfffffff0
cmp eax, 0xffffffff
jne 0x50630c
jmp 0x506458
test ecx, ecx
setne al
cmp r8b, 0x42
sete cl
cmp cl, al
je 0x5062ac
cmp r8b, 0x42
je 0x5062e8
jmp 0x5062ac
setne al
cmp r8b, 0x42
setg cl
cmp cl, al
je 0x5062ac
cmp r8b, 0x42
jle 0x5062ac
cmp word [rsi + 0x30], 0
jns 0x5062ac
jmp 0x5062e8
mov esi, r13d
mov rcx, qword [rsp + 0xd0]
mov rax, qword [rsp + 0x50]
mov qword [rcx], rax
mov eax, esi
add rsp, 0x68
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret