Function at 0x40a524
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, [0x00423940]
mov r12, rcx
mov r15d, edx
lea rcx, [0x0042f140]
mov edx, 0x28
call fcn.004039d0
lea rbx, [rsp + 0x48]
mov r13, rax
call fcn.00412bc2
lea rcx, [r13 + 0x10]
mov rdx, rax
call fcn.00402d25
mov rcx, qword [r12]
mov r8, qword [r12 + 0x70]
mov r9d, 2
mov rdx, rbx
mov qword [rsp + 0x48], 0
call fcn.004127a3
mov r14, qword [rsp + 0x48]
test r14, r14
je 0x40a5b4
mov rsi, qword [r14]
test rsi, rsi
je 0x40a5b4
lea rdx, [0x00423d40]
mov rcx, r14
call fcn.004095ea
test al, al
je 0x40a5c8
jmp 0x40a5da
mov rcx, r12
call fcn.00401bef
lea rcx, [0x00423a80]
jmp 0x40a6a3
test bpl, bpl
je 0x40a638
mov qword [rsp + 0x40], 0
xor ebp, ebp
jmp 0x40a604
call fcn.00412aa9
lea rcx, [r13 + 0x20]
mov rdx, rax
call fcn.00402d25
test r15b, r15b
je 0x40ade8
jmp 0x40a971
cmp byte [r14 + rbp + 0x10], 0x3a
je 0x40a60d
mov rbp, r10
cmp rsi, rbp
lea r10, [rbp + 1]
jg 0x40a5f9
xor r8d, r8d
lea rdx, [rsp + 0x40]
mov r9, rbp
mov rcx, r14
mov qword [rsp + 0x20], r10
call fcn.004042ae
test rbp, rbp
mov r10, qword [rsp + 0x20]
jne 0x40a769
jmp 0x40a771
xor r8d, r8d
lea rdx, [0x00423a50]
mov rcx, r14
call fcn.004017eb
mov rbp, rax
test rax, rax
jle 0x40a66b
mov r8, rax
lea rdx, [0x004239d0]
call fcn.004017eb
mov rsi, rax
test rax, rax
jg 0x40a6ce
jmp 0x40a6a8
lea rcx, [rsi + 0x18]
call fcn.00403c25
lea rdx, [0x00423a20]
mov r9, rax
mov rcx, rax
call fcn.00401da5
mov rdx, r14
mov rcx, r9
call fcn.00401dcb
lea rdx, [0x004239f0]
mov rcx, r9
call fcn.00401da5
mov rcx, r9
call fcn.0040a448
lea rdx, [0x004239b0]
call fcn.004017eb
mov rsi, rax
test rax, rax
jle 0x40a6fb
mov r8, qword [r13]
lea rcx, [0x004239b0]
mov qword [rsp + 0x20], r8
jmp 0x40a6de
mov r8, qword [r13]
lea rcx, [0x004239d0]
mov qword [rsp + 0x20], r8
call fcn.00403bbe
mov r8, qword [rsp + 0x20]
mov qword [r13], rax
test r8, r8
je 0x40a704
mov rcx, r8
call fcn.00402d7a
jmp 0x40a704
lea rcx, [0x00423980]
jmp 0x40a6a3
mov rcx, qword [r14]
lea rax, [rsi + rbp]
mov r10, rax
cmp rax, rcx
jge 0x40a72a
mov dl, byte [r14 + rax + 0x10]
inc rax
lea r8d, [rdx - 9]
cmp r8b, 4
jbe 0x40a70b
cmp dl, 0x20
je 0x40a70b
lea r9, [rsp + 0x30]
mov rdx, r10
mov r8d, 1
mov rcx, r9
mov qword [rsp + 0x20], r9
call fcn.00407503
mov r9, qword [rsp + 0x20]
mov rcx, r14
mov rdx, r9
call fcn.004074b1
lea rcx, [r13 + 8]
mov rdx, rax
call fcn.00402d25
mov bpl, 1
jmp 0x40a56d
cmp byte [r14 + rbp + 0x10], 0x3a
je 0x40a77d
lea rcx, [0x00423960]
jmp 0x40a6a3
lea r9, [rsp + 0x30]
mov rdx, r10
mov r8d, 1
mov rcx, r9
mov qword [rsp + 0x20], r9
call fcn.00407503
mov r9, qword [rsp + 0x20]
mov rcx, r14
mov rdx, r9
call fcn.004074b1
mov r9, rax
test rax, rax
je 0x40a801
mov rax, qword [rax]
xor edx, edx
lea r8, [rax - 1]
cmp r8, rdx
jl 0x40a807
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 0x40a7e5
inc rdx
jmp 0x40a7b9
dec r8
cmp rdx, r8
jg 0x40a807
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 0x40a7dd
jmp 0x40a807
xor edx, edx
or r8, 0xffffffffffffffff
mov rcx, r9
call fcn.00405807
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.0041253c
mov r8, rbx
mov rdx, rax
mov rax, qword [rsi]
mov rcx, qword [rax]
mov qword [rsp + 0x48], 0
call fcn.00412376
mov cl, byte [rsi + 8]
mov r9, qword [rsp + 0x20]
test rax, rax
js 0x40a8f8
mov rdx, r9
call fcn.0041253c
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.00412376
mov r9, qword [rsp + 0x20]
test rax, rax
jns 0x40a88f
mov rcx, r9
call fcn.00405324
imul rax, rax, 0x18
mov rsi, qword [rsi]
lea rdx, [0x0042f4c0]
lea rbp, [rsi + rax + 0x20]
add rsi, rax
mov rcx, qword [rsi + 0x20]
call fcn.00405083
mov rcx, rbp
mov rdx, rax
call fcn.00403efa
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.00403bbe
mov r8, qword [rsp + 0x20]
mov qword [rbp + rsi*8], rax
test r8, r8
je 0x40a950
mov rcx, r8
call fcn.00402d7a
jmp 0x40a950
mov rdx, r9
call fcn.0041253c
mov edx, 1
lea rcx, [0x0042f4c0]
mov qword [rsp + 0x20], rax
call fcn.00404ff1
mov rcx, r14
mov r9, qword [rax + 0x10]
mov rbp, rax
mov qword [rsp + 0x28], r9
call fcn.00403bbe
mov r9, qword [rsp + 0x28]
mov qword [rbp + 0x10], rax
test r9, r9
je 0x40a940
mov rcx, r9
call fcn.00402d7a
mov rdx, qword [rsp + 0x20]
mov rcx, qword [rsi]
mov r8, rbp
call fcn.00409632
mov rax, qword [r13 + 0x10]
mov rax, qword [rax]
cmp qword [rax + 8], 0x2710
jle 0x40a761
lea rcx, [0x00423900]
jmp 0x40a6a3
mov rcx, r13
call fcn.0040a4c6
cmp rax, 0xcc
je 0x40ade8
mov rdx, qword [r13 + 0x20]
lea rcx, [r12 + 0xb8]
call fcn.00402d25
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.00401df3
mov rax, qword [rsp + 0x40]
mov edx, 1
lea rcx, [0x0042f4c0]
mov qword [r12 + 0xb0], rax
call fcn.00404ff1
xor edx, edx
lea rcx, [rax + 0x10]
mov qword [rsp + 0x20], rax
call fcn.00402d25
mov r8, qword [rsp + 0x20]
lea rdx, [0x004238c0]
mov rcx, r14
call fcn.004098a4
mov rcx, rax
call fcn.0040989b
lea rdx, [0x004238a0]
mov rcx, rax
call fcn.004095ea
test al, al
jne 0x40aad8
mov edx, 1
lea rcx, [0x0042f4c0]
call fcn.00404ff1
xor edx, edx
lea rcx, [rax + 0x10]
mov qword [rsp + 0x20], rax
call fcn.00402d25
mov r8, qword [rsp + 0x20]
mov rcx, r14
lea rdx, [0x00423880]
call fcn.004098a4
mov rcx, rax
mov r15, rax
call fcn.0040989b
test rax, rax
jne 0x40aba6
jmp 0x40abac
mov r8, qword [r15]
test r8, r8
je 0x40ab05
xor r9d, r9d
xor edx, edx
cmp r8, r9
jg 0x40ab11
mov r8, qword [r12 + 0x70]
test rdx, rdx
jle 0x40ab91
mov r9d, 1
mov rcx, r12
mov qword [rsp + 0x20], rdx
call fcn.0040913e
mov rdx, qword [rsp + 0x20]
cmp rdx, rax
jne 0x40ab05
mov r8, qword [r12 + 0x70]
xor r9d, r9d
mov edx, 2
mov rcx, r12
call fcn.0040913e
cmp rax, 2
jne 0x40ab05
mov rcx, qword [r12]
mov r9d, 2
or r8, 0xffffffffffffffff
mov rdx, rbx
mov qword [rsp + 0x48], 0
call fcn.004127a3
mov r15, qword [rsp + 0x48]
test r15, r15
jne 0x40aa80
lea rcx, [0x00423740]
jmp 0x40a6a3
movzx eax, byte [r15 + r9 + 0x10]
cmp al, 0x46
jg 0x40ab3e
cmp al, 0x40
jg 0x40ab59
cmp al, 0x39
jg 0x40ab34
cmp al, 0x2f
jle 0x40ab66
movzx ecx, al
shl rdx, 4
sub rcx, 0x30
jmp 0x40ab54
cmp al, 0x3b
je 0x40aa92
jmp 0x40ab66
lea ecx, [rax - 0x61]
cmp cl, 5
ja 0x40ab66
shl rdx, 4
mov rcx, rdx
movzx edx, al
sub rdx, 0x57
or rdx, rcx
jmp 0x40ab89
shl rdx, 4
sub rax, 0x37
or rdx, rax
jmp 0x40ab89
lea rcx, [r8 + 0x14]
call fcn.00403c25
lea rdx, [0x00423700]
mov rcx, rax
mov r9, rax
call fcn.00401da5
mov rdx, r15
jmp 0x40ac8f
inc r9
jmp 0x40aa8d
xor r9d, r9d
mov edx, 2
mov rcx, r12
call fcn.0040913e
jmp 0x40ad80
cmp qword [rax], 0
jne 0x40abca
lea rdx, [0x004239b0]
mov rcx, rsi
call fcn.004095ea
mov ebx, eax
test al, al
je 0x40ac9c
jmp 0x40ad04
mov rcx, r15
call fcn.0040989b
mov rcx, rax
call fcn.004051a6
mov qword [r12 + 0x98], rax
mov r15, rax
test rax, rax
jle 0x40ad80
mov r8, qword [r12 + 0x70]
mov r9d, 1
mov rdx, rax
mov rcx, r12
call fcn.0040913e
mov rbx, rax
test rax, rax
je 0x40ac16
cmp r15, rax
jne 0x40ac2a
jmp 0x40ad80
mov rcx, r12
call fcn.00401bef
lea rcx, [0x00423840]
jmp 0x40a6a3
mov rcx, r15
call fcn.0040428a
mov rcx, rbx
mov r13, rax
call fcn.0040428a
xor edx, edx
mov r12, rax
test r13, r13
je 0x40ac4b
mov rdx, qword [r13]
xor eax, eax
test r12, r12
je 0x40ac56
mov rax, qword [r12]
lea rcx, [rdx + rax + 0x3c]
call fcn.00403c25
lea rdx, [0x004237e0]
mov r9, rax
mov rcx, rax
call fcn.00401da5
mov rdx, r13
mov rcx, r9
call fcn.00401dcb
lea rdx, [0x004237c0]
mov rcx, r9
call fcn.00401da5
mov rdx, r12
mov rcx, r9
call fcn.00401dcb
jmp 0x40a6a0
lea rdx, [0x004239d0]
mov rcx, rsi
call fcn.004095ea
mov ebx, eax
test al, al
je 0x40ad04
mov edx, 1
lea rcx, [0x0042f4c0]
mov ebx, 1
call fcn.00404ff1
xor edx, edx
lea rcx, [rax + 0x10]
mov qword [rsp + 0x20], rax
call fcn.00402d25
mov r8, qword [rsp + 0x20]
lea rdx, [0x004237a0]
mov rcx, r14
call fcn.004098a4
mov rcx, rax
call fcn.0040989b
test rax, rax
je 0x40ad01
xor ebx, ebx
cmp qword [rax], 0
sete bl
and ebx, 1
mov edx, 1
lea rcx, [0x0042f4c0]
call fcn.00404ff1
xor edx, edx
lea rcx, [rax + 0x10]
mov qword [rsp + 0x20], rax
call fcn.00402d25
mov r8, qword [rsp + 0x20]
lea rdx, [0x004237a0]
mov rcx, r14
call fcn.004098a4
mov rcx, rax
call fcn.0040989b
lea rdx, [0x00423780]
mov rcx, rax
call fcn.004095ea
test al, al
jne 0x40ad58
test bl, bl
je 0x40ad80
mov r8, qword [r12 + 0x70]
mov r9d, 1
mov edx, 0xfa0
mov rcx, r12
call fcn.0040913e
cmp rax, 0xfa0
je 0x40ad58
mov rcx, r12
call fcn.00401bef
mov rax, qword [r12 + 0xb8]
xor edx, edx
mov rcx, rax
call qword [rax + 0x18]
mov edx, 1
lea rcx, [0x0042f4c0]
call fcn.00404ff1
xor edx, edx
lea rcx, [rax + 0x10]
mov qword [rsp + 0x20], rax
call fcn.00402d25
mov r8, qword [rsp + 0x20]
lea rdx, [0x004237a0]
mov rcx, r14
call fcn.004098a4
mov rcx, rax
call fcn.0040989b
lea rdx, [0x00423780]
mov rcx, rax
call fcn.004095ea
test al, al
je 0x40ade8
mov rcx, r12
call fcn.00401bef
mov rax, r13
add rsp, 0x58
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret