Function at 0x409650
Capabilities:
Enumerate pe sections
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, 0xb8
movaps xmmword [rsp + 0xa0], xmm6
lea rdi, [0x0041a0a1]
mov rbx, rcx
mov rcx, qword [0x004381c0]
mov qword [rsp + 0x108], rdx
mov edx, 0x16
mov dword [rsp + 0x94], 0
call fcn.00407070
mov r9d, 0xffffc3e3
movdqa xmm0, xmmword [0x00435ab0]
mov edx, 0x35ee12c
mov word [rax + 0x24], r9w
lea rcx, [0x0041b980]
mov rsi, rax
movups xmmword [rax + 0x10], xmm0
lea r12, [rax + 0x10]
mov dword [rax + 0x20], 0xff410000
call fcn.00404080
mov edx, 0x4df5a7a4
mov rcx, rax
call fcn.004042d0
mov qword [rsp + 0x58], rdi
test rax, rax
je 0x4096f7
cmp qword [rax], 0
lea rdx, [rax + 0x10]
cmove rdx, rdi
mov qword [rsp + 0x58], rdx
xor r9d, r9d
mov r8d, 1
mov edx, 0x80000000
mov rcx, qword [rsp + 0x58]
mov qword [rsp + 0x30], 0
mov dword [rsp + 0x28], pe_nt_image_headers64
mov dword [rsp + 0x20], 3
call qword [0x0043b0a0]
xor edx, edx
mov rdi, rax
mov rcx, rax
call qword [0x0043b098]
mov r13d, eax
mov rax, qword [0x004385e0]
mov r8d, dword [rax]
test r8d, r8d
je 0x409b24
mov rax, qword [0x00437ea0]
call qword [rax]
movsxd r8, r13d
xor edx, edx
mov rcx, rax
mov rax, qword [0x00437e90]
call qword [rax]
mov qword [rsp + 0x48], rax
mov r15, rax
mov r8d, r13d
mov rcx, rdi
mov rdx, r15
mov qword [rsp + 0x20], 0
lea r9, [rsp + 0x94]
call qword [0x0043b088]
movsxd r11, dword [r15 + 0x3c]
lea r14, [r15 + r11]
mov eax, dword [r14 + 0x88]
movzx r8d, word [r14 + 0x14]
mov dword [rsp + 0x50], eax
lea rax, [r14 + 0x18]
mov rcx, rax
add rax, r8
cmp word [r14 + 6], 0
mov qword [rsp + 0x60], rax
mov rbp, rax
je 0x4098a0
mov rdi, rax
mov rax, qword [0x004385a0]
xor r15d, r15d
mov r13, rcx
movdqa xmm6, xmmword [0x00435a90]
mov qword [rsp + 0x100], rbx
mov rbp, r8
mov ebx, r15d
mov qword [rsp + 0x68], rsi
mov r15, rax
jmp 0x409808
mov rdi, rbp
movzx ebp, word [r14 + 0x14]
lea eax, [rbx + rbx*4]
add rbp, r13
mov edx, 0x19
shl eax, 3
mov rcx, r15
movzx eax, ax
add rbp, rax
call fcn.00404110
lea rcx, [0x0041b960]
movups xmmword [rax], xmm6
movzx edx, byte [rbp]
mov rsi, rax
mov byte [rax + 0x10], dl
movzx edx, byte [rbp + 1]
mov byte [rax + 0x11], dl
movzx edx, byte [rbp + 2]
mov byte [rax + 0x12], dl
movzx edx, byte [rbp + 3]
mov byte [rax + 0x13], dl
movzx edx, byte [rbp + 4]
mov byte [rax + 0x14], dl
movzx edx, byte [rbp + 5]
mov byte [rax + 0x15], dl
movzx edx, byte [rbp + 6]
mov byte [rax + 0x16], dl
movzx edx, byte [rbp + 7]
mov byte [rax + 0x17], dl
mov edx, 0x5db6e72c
call fcn.004042d0
mov rcx, rsi
mov rdx, rax
call fcn.0040fa50
test rax, rax
cmovs rbp, rdi
add ebx, 1
cmp word [r14 + 6], bx
ja 0x409800
mov rsi, qword [rsp + 0x68]
mov rbx, qword [rsp + 0x100]
mov rdi, qword [rsp + 0x48]
movsxd r15, dword [rsp + 0x50]
movsxd rdx, dword [rbp + 0xc]
movsxd rax, dword [rbp + 0x14]
add r15, rdi
sub r15, rdx
add r15, rax
movsxd rcx, dword [r15 + 0x20]
add rcx, rdi
sub rcx, rdx
lea r13, [rcx + rax]
movsxd rcx, dword [r15 + 0x1c]
add rcx, rdi
sub rcx, rdx
lea rdi, [rcx + rax]
mov ecx, dword [r15 + 0x18]
mov qword [rsp + 0x70], rdi
test ecx, ecx
jle 0x409b69
mov rcx, qword [rsp + 0x108]
lea rdi, [r12 + 0x10]
mov qword [rsp + 0x50], r13
mov qword [rsp + 0x80], rdi
mov r13, qword [rsp + 0x108]
mov dword [rsp + 0x68], 0
add rcx, 0x10
cmp r12, rcx
mov qword [rsp + 0x78], rcx
setae r9b
cmp qword [rsp + 0x108], rdi
setae cl
xor r14d, r14d
or r9d, ecx
mov byte [rsp + 0x8f], r9b
jmp 0x40996f
lea edi, [r14 + 1]
test rcx, rcx
je 0x40995a
test rbx, rbx
je 0x40995a
mov rdx, rbx
call sub.msvcrt.dll_strcmp
test eax, eax
je 0x40998b
cmp dword [r15 + 0x18], edi
mov r14d, edi
jle 0x409add
movsxd rdx, dword [rbp + 0xc]
movsxd rax, dword [rbp + 0x14]
mov rdi, qword [rsp + 0x50]
movsxd rcx, r14d
movsxd rcx, dword [rdi + rcx*4]
add rcx, qword [rsp + 0x48]
sub rcx, rdx
add rcx, rax
cmp rbx, rcx
jne 0x409940
mov rcx, qword [rsp + 0x70]
lea edi, [r14 + 1]
movsxd rax, edi
mov edx, dword [rcx + rax*4]
mov rax, qword [rsp + 0x60]
movsxd r8, dword [rax + 0xc]
movsxd rcx, dword [rax + 0x14]
mov rax, qword [0x004385e0]
mov eax, dword [rax]
test eax, eax
jne 0x409afd
movsxd rax, edx
add rax, qword [rsp + 0x48]
sub rax, r8
add rax, rcx
movzx edx, byte [rax + 4]
mov rcx, qword [rsp + 0x58]
mov byte [rsi + 0x14], dl
movzx edx, byte [rax + 5]
mov byte [rsi + 0x15], dl
movzx edx, byte [rax + 6]
mov byte [rsi + 0x16], dl
movzx eax, byte [rax + 7]
mov byte [rsi + 0x17], al
call qword [0x0043b0d0]
mov rdx, rbx
mov rcx, rax
call qword [0x0043b0e0]
lea rdx, [rax + 0x27]
nop dword [rax]
cmp byte [rax], 0xf
jne 0x409a0f
cmp byte [rax + 1], 5
je 0x409b1c
add rax, 1
cmp rdx, rax
jne 0x409a00
xor r14d, r14d
xor eax, eax
mov rcx, rax
mov r11d, eax
mov r10d, eax
mov byte [rsi + 0x1a], r14b
shr rcx, 0x30
mov r9, rax
mov r8, rax
mov qword [rsp + 0x98], rax
mov qword [rsp + 0x68], rcx
shr r11d, 0x10
movzx ecx, ah
shr r10d, 0x18
shr r9, 0x20
shr r8, 0x28
mov byte [rsi + 0x1b], cl
movzx ecx, byte [rsp + 0x68]
shr rax, 0x38
cmp byte [rsp + 0x8f], 0
mov byte [rsi + 0x1c], r11b
mov byte [rsi + 0x1d], r10b
mov byte [rsi + 0x1e], r9b
mov byte [rsi + 0x1f], r8b
mov byte [rsi + 0x20], cl
mov byte [rsi + 0x21], al
je 0x409b45
mov rax, qword [rsp + 0x80]
movdqu xmm1, xmmword [rsi + 0x10]
mov rcx, qword [rsp + 0x78]
movups xmmword [r13], xmm1
movzx eax, byte [rax]
mov byte [rcx], al
movzx eax, byte [r12 + 0x11]
mov byte [r13 + 0x11], al
movzx eax, byte [r12 + 0x12]
mov byte [r13 + 0x12], al
movzx eax, byte [r12 + 0x13]
mov byte [r13 + 0x13], al
movzx eax, byte [r12 + 0x14]
mov byte [r13 + 0x14], al
cmp dword [r15 + 0x18], edi
mov dword [rsp + 0x68], 1
mov r14d, edi
jg 0x409967
mov eax, dword [rsp + 0x68]
movaps xmm6, xmmword [rsp + 0xa0]
add rsp, 0xb8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov rdx, qword [rsp + 0x70]
lea eax, [r14 + 8]
cdqe
movsxd rax, dword [rdx + rax*4]
add rax, qword [rsp + 0x48]
sub rax, r8
add rax, rcx
jmp 0x4099c6
mov r14d, eax
jmp 0x409a1d
call qword [0x0043b0e8]
movsxd r8, r13d
xor edx, edx
mov rcx, rax
call qword [0x0043b090]
mov qword [rsp + 0x48], rax
mov r15, rax
jmp 0x40976f
xor eax, eax
nop word [rax + rax]
movzx edx, byte [rsi + rax + 0x10]
mov byte [r13 + rax], dl
add rax, 1
cmp rax, 0x15
jne 0x409b50
jmp 0x409ac8
mov dword [rsp + 0x68], 0
jmp 0x409add