Function at 0x409965
Capabilities:
Check for software breakpoints

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x58
xor ebp, ebp
lea rdi, [0x0041a740]
mov r12, rcx
mov r15d, edx
lea rcx, [0x00435cc0]
mov edx, 0x28
call fcn.00403af4
lea rbx, [rsp + 0x48]
mov r13, rax
call fcn.0040c03a
lea rcx, [r13 + 0x10]
mov rdx, rax
call fcn.00402f2a
mov rcx, qword [r12]
mov r8, qword [r12 + 0x70]
mov r9d, 2
mov rdx, rbx
mov qword [rsp + 0x48], 0
call fcn.0040bc1b
mov r14, qword [rsp + 0x48]
test r14, r14
je 0x4099f5
mov rsi, qword [r14]
test rsi, rsi
je 0x4099f5
lea rdx, [0x0041ab40]
mov rcx, r14
call fcn.00408584
test al, al
je 0x409a09
jmp 0x409a1b
mov rcx, r12
call fcn.00401cc0
lea rcx, [0x0041a880]
jmp 0x409ae4
test bpl, bpl
je 0x409a79
mov qword [rsp + 0x40], 0
xor ebp, ebp
jmp 0x409a45
call fcn.0040bf21
lea rcx, [r13 + 0x20]
mov rdx, rax
call fcn.00402f2a
test r15b, r15b
je 0x40a229
jmp 0x409db2
cmp byte [r14 + rbp + 0x10], 0x3a
je 0x409a4e
mov rbp, r10
cmp rsi, rbp
lea r10, [rbp + 1]
jg 0x409a3a
xor r8d, r8d
lea rdx, [rsp + 0x40]
mov r9, rbp
mov rcx, r14
mov qword [rsp + 0x20], r10
call fcn.00404424
test rbp, rbp
mov r10, qword [rsp + 0x20]
jne 0x409baa
jmp 0x409bb2
xor r8d, r8d
lea rdx, [0x0041a850]
mov rcx, r14
call fcn.0040180b
mov rbp, rax
test rax, rax
jle 0x409aac
mov r8, rax
lea rdx, [0x0041a7d0]
call fcn.0040180b
mov rsi, rax
test rax, rax
jg 0x409b0f
jmp 0x409ae9
lea rcx, [rsi + 0x18]
call fcn.00403d49
lea rdx, [0x0041a820]
mov r9, rax
mov rcx, rax
call fcn.00401e8b
mov rdx, r14
mov rcx, r9
call fcn.00401eb1
lea rdx, [0x0041a7f0]
mov rcx, r9
call fcn.00401e8b
mov rcx, r9
call fcn.00405ca1
lea rdx, [0x0041a7b0]
call fcn.0040180b
mov rsi, rax
test rax, rax
jle 0x409b3c
mov r8, qword [r13]
lea rcx, [0x0041a7b0]
mov qword [rsp + 0x20], r8
jmp 0x409b1f
mov r8, qword [r13]
lea rcx, [0x0041a7d0]
mov qword [rsp + 0x20], r8
call fcn.00403ce2
mov r8, qword [rsp + 0x20]
mov qword [r13], rax
test r8, r8
je 0x409b45
mov rcx, r8
call fcn.00402f7f
jmp 0x409b45
lea rcx, [0x0041a780]
jmp 0x409ae4
mov rcx, qword [r14]
lea rax, [rsi + rbp]
mov r10, rax
cmp rax, rcx
jge 0x409b6b
mov dl, byte [r14 + rax + 0x10]
inc rax
lea r8d, [rdx - 9]
cmp r8b, 4
jbe 0x409b4c
cmp dl, 0x20
je 0x409b4c
lea r9, [rsp + 0x30]
mov rdx, r10
mov r8d, 1
mov rcx, r9
mov qword [rsp + 0x20], r9
call fcn.00401fd9
mov r9, qword [rsp + 0x20]
mov rcx, r14
mov rdx, r9
call fcn.004041e1
lea rcx, [r13 + 8]
mov rdx, rax
call fcn.00402f2a
mov bpl, 1
jmp 0x4099ae
cmp byte [r14 + rbp + 0x10], 0x3a
je 0x409bbe
lea rcx, [0x0041a760]
jmp 0x409ae4
lea r9, [rsp + 0x30]
mov rdx, r10
mov r8d, 1
mov rcx, r9
mov qword [rsp + 0x20], r9
call fcn.00401fd9
mov r9, qword [rsp + 0x20]
mov rcx, r14
mov rdx, r9
call fcn.004041e1
mov r9, rax
test rax, rax
je 0x409c42
mov rax, qword [rax]
xor edx, edx
lea r8, [rax - 1]
cmp r8, rdx
jl 0x409c48
mov cl, byte [r9 + rdx + 0x10]
mov eax, ecx
and ecx, 7
shr al, 3
movzx eax, al
movzx eax, byte [rdi + rax]
shr eax, cl
test al, 1
je 0x409c26
inc rdx
jmp 0x409bfa
dec r8
cmp rdx, r8
jg 0x409c48
mov cl, byte [r9 + r8 + 0x10]
mov eax, ecx
and ecx, 7
shr al, 3
movzx eax, al
movzx eax, byte [rdi + rax]
shr eax, cl
test al, 1
jne 0x409c1e
jmp 0x409c48
xor edx, edx
or r8, 0xffffffffffffffff
mov rcx, r9
call fcn.00405d88
mov rsi, qword [r13 + 0x10]
mov r9, qword [rsp + 0x40]
mov r14, rax
mov cl, byte [rsi + 8]
mov rdx, r9
mov qword [rsp + 0x20], r9
call fcn.0040b9b4
mov r8, rbx
mov rdx, rax
mov rax, qword [rsi]
mov rcx, qword [rax]
mov qword [rsp + 0x48], 0
call fcn.0040b885
mov cl, byte [rsi + 8]
mov r9, qword [rsp + 0x20]
test rax, rax
js 0x409d39
mov rdx, r9
call fcn.0040b9b4
mov rsi, qword [rsi]
mov r8, rbx
mov qword [rsp + 0x48], 0
mov rdx, rax
mov qword [rsp + 0x20], rax
mov rcx, qword [rsi]
call fcn.0040b885
mov r9, qword [rsp + 0x20]
test rax, rax
jns 0x409cd0
mov rcx, r9
call fcn.00405b42
imul rax, rax, 0x18
mov rsi, qword [rsi]
lea rdx, [0x00428220]
lea rbp, [rsi + rax + 0x20]
add rsi, rax
mov rcx, qword [rsi + 0x20]
call fcn.004055d0
mov rcx, rbp
mov rdx, rax
call fcn.0040401e
mov rbp, qword [rsi + 0x20]
mov rcx, r14
mov rsi, qword [rbp]
lea rax, [rsi + 1]
add rsi, 2
mov qword [rbp], rax
mov r8, qword [rbp + rsi*8]
mov qword [rsp + 0x20], r8
call fcn.00403ce2
mov r8, qword [rsp + 0x20]
mov qword [rbp + rsi*8], rax
test r8, r8
je 0x409d91
mov rcx, r8
call fcn.00402f7f
jmp 0x409d91
mov rdx, r9
call fcn.0040b9b4
mov edx, 1
lea rcx, [0x00428220]
mov qword [rsp + 0x20], rax
call fcn.0040553e
mov rcx, r14
mov r9, qword [rax + 0x10]
mov rbp, rax
mov qword [rsp + 0x28], r9
call fcn.00403ce2
mov r9, qword [rsp + 0x28]
mov qword [rbp + 0x10], rax
test r9, r9
je 0x409d81
mov rcx, r9
call fcn.00402f7f
mov rdx, qword [rsp + 0x20]
mov rcx, qword [rsi]
mov r8, rbp
call fcn.004085cc
mov rax, qword [r13 + 0x10]
mov rax, qword [rax]
cmp qword [rax + 8], 0x2710
jle 0x409ba2
lea rcx, [0x0041a700]
jmp 0x409ae4
mov rcx, r13
call fcn.00405ae4
cmp rax, 0xcc
je 0x40a229
mov rdx, qword [r13 + 0x20]
lea rcx, [r12 + 0xb8]
call fcn.00402f2a
mov r14, qword [r13 + 0x10]
mov rsi, qword [r13]
mov qword [r12 + 0x98], 0
lea rcx, [rsp + 0x40]
mov edx, 8
mov qword [r12 + 0xa0], 0
mov qword [r12 + 0xa8], 0
call fcn.00401eb9
mov rax, qword [rsp + 0x40]
mov edx, 1
lea rcx, [0x00428220]
mov qword [r12 + 0xb0], rax
call fcn.0040553e
xor edx, edx
lea rcx, [rax + 0x10]
mov qword [rsp + 0x20], rax
call fcn.00402f2a
mov r8, qword [rsp + 0x20]
lea rdx, [0x0041a6c0]
mov rcx, r14
call fcn.00408835
mov rcx, rax
call fcn.00406312
lea rdx, [0x0041a6a0]
mov rcx, rax
call fcn.00408584
test al, al
jne 0x409f19
mov edx, 1
lea rcx, [0x00428220]
call fcn.0040553e
xor edx, edx
lea rcx, [rax + 0x10]
mov qword [rsp + 0x20], rax
call fcn.00402f2a
mov r8, qword [rsp + 0x20]
mov rcx, r14
lea rdx, [0x0041a680]
call fcn.00408835
mov rcx, rax
mov r15, rax
call fcn.00406312
test rax, rax
jne 0x409fe7
jmp 0x409fed
mov r8, qword [r15]
test r8, r8
je 0x409f46
xor r9d, r9d
xor edx, edx
cmp r8, r9
jg 0x409f52
mov r8, qword [r12 + 0x70]
test rdx, rdx
jle 0x409fd2
mov r9d, 1
mov rcx, r12
mov qword [rsp + 0x20], rdx
call fcn.00408310
mov rdx, qword [rsp + 0x20]
cmp rdx, rax
jne 0x409f46
mov r8, qword [r12 + 0x70]
xor r9d, r9d
mov edx, 2
mov rcx, r12
call fcn.00408310
cmp rax, 2
jne 0x409f46
mov rcx, qword [r12]
mov r9d, 2
or r8, 0xffffffffffffffff
mov rdx, rbx
mov qword [rsp + 0x48], 0
call fcn.0040bc1b
mov r15, qword [rsp + 0x48]
test r15, r15
jne 0x409ec1
lea rcx, [0x0041a540]
jmp 0x409ae4
movzx eax, byte [r15 + r9 + 0x10]
cmp al, 0x46
jg 0x409f7f
cmp al, 0x40
jg 0x409f9a
cmp al, 0x39
jg 0x409f75
cmp al, 0x2f
jle 0x409fa7
movzx ecx, al
shl rdx, 4
sub rcx, 0x30
jmp 0x409f95
cmp al, 0x3b
je 0x409ed3
jmp 0x409fa7
lea ecx, [rax - 0x61]
cmp cl, 5
ja 0x409fa7
shl rdx, 4
mov rcx, rdx
movzx edx, al
sub rdx, 0x57
or rdx, rcx
jmp 0x409fca
shl rdx, 4
sub rax, 0x37
or rdx, rax
jmp 0x409fca
lea rcx, [r8 + 0x14]
call fcn.00403d49
lea rdx, [0x0041a500]
mov rcx, rax
mov r9, rax
call fcn.00401e8b
mov rdx, r15
jmp 0x40a0d0
inc r9
jmp 0x409ece
xor r9d, r9d
mov edx, 2
mov rcx, r12
call fcn.00408310
jmp 0x40a1c1
cmp qword [rax], 0
jne 0x40a00b
lea rdx, [0x0041a7b0]
mov rcx, rsi
call fcn.00408584
mov ebx, eax
test al, al
je 0x40a0dd
jmp 0x40a145
mov rcx, r15
call fcn.00406312
mov rcx, rax
call fcn.00405966
mov qword [r12 + 0x98], rax
mov r15, rax
test rax, rax
jle 0x40a1c1
mov r8, qword [r12 + 0x70]
mov r9d, 1
mov rdx, rax
mov rcx, r12
call fcn.00408310
mov rbx, rax
test rax, rax
je 0x40a057
cmp r15, rax
jne 0x40a06b
jmp 0x40a1c1
mov rcx, r12
call fcn.00401cc0
lea rcx, [0x0041a640]
jmp 0x409ae4
mov rcx, r15
call fcn.00404400
mov rcx, rbx
mov r13, rax
call fcn.00404400
xor edx, edx
mov r12, rax
test r13, r13
je 0x40a08c
mov rdx, qword [r13]
xor eax, eax
test r12, r12
je 0x40a097
mov rax, qword [r12]
lea rcx, [rdx + rax + 0x3c]
call fcn.00403d49
lea rdx, [0x0041a5e0]
mov r9, rax
mov rcx, rax
call fcn.00401e8b
mov rdx, r13
mov rcx, r9
call fcn.00401eb1
lea rdx, [0x0041a5c0]
mov rcx, r9
call fcn.00401e8b
mov rdx, r12
mov rcx, r9
call fcn.00401eb1
jmp 0x409ae1
lea rdx, [0x0041a7d0]
mov rcx, rsi
call fcn.00408584
mov ebx, eax
test al, al
je 0x40a145
mov edx, 1
lea rcx, [0x00428220]
mov ebx, 1
call fcn.0040553e
xor edx, edx
lea rcx, [rax + 0x10]
mov qword [rsp + 0x20], rax
call fcn.00402f2a
mov r8, qword [rsp + 0x20]
lea rdx, [0x0041a5a0]
mov rcx, r14
call fcn.00408835
mov rcx, rax
call fcn.00406312
test rax, rax
je 0x40a142
xor ebx, ebx
cmp qword [rax], 0
sete bl
and ebx, 1
mov edx, 1
lea rcx, [0x00428220]
call fcn.0040553e
xor edx, edx
lea rcx, [rax + 0x10]
mov qword [rsp + 0x20], rax
call fcn.00402f2a
mov r8, qword [rsp + 0x20]
lea rdx, [0x0041a5a0]
mov rcx, r14
call fcn.00408835
mov rcx, rax
call fcn.00406312
lea rdx, [0x0041a580]
mov rcx, rax
call fcn.00408584
test al, al
jne 0x40a199
test bl, bl
je 0x40a1c1
mov r8, qword [r12 + 0x70]
mov r9d, 1
mov edx, 0xfa0
mov rcx, r12
call fcn.00408310
cmp rax, 0xfa0
je 0x40a199
mov rcx, r12
call fcn.00401cc0
mov rax, qword [r12 + 0xb8]
xor edx, edx
mov rcx, rax
call qword [rax + 0x18]
mov edx, 1
lea rcx, [0x00428220]
call fcn.0040553e
xor edx, edx
lea rcx, [rax + 0x10]
mov qword [rsp + 0x20], rax
call fcn.00402f2a
mov r8, qword [rsp + 0x20]
lea rdx, [0x0041a5a0]
mov rcx, r14
call fcn.00408835
mov rcx, rax
call fcn.00406312
lea rdx, [0x0041a580]
mov rcx, rax
call fcn.00408584
test al, al
je 0x40a229
mov rcx, r12
call fcn.00401cc0
mov rax, r13
add rsp, 0x58
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret