Function at 0x46f000
Capabilities:
Parse pe header
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, 0x298
mov rax, qword [rsp + 0x308]
mov dword [rax], 0
mov rsi, r8
mov rbp, r9
mov r12, rcx
mov rax, qword [rsp + 0x310]
lea rbx, [rsp + 0xd0]
mov r14d, edx
mov dword [rax], 0
mov qword [rsp + 0x28], r9
mov r9d, 0x40
mov qword [rsp + 0x20], r8
xor r8d, r8d
mov qword [rsp + 0x30], rbx
call fcn.0046fe70
test eax, eax
je 0x46f0ad
mov rax, qword [rsp + 0xd0]
cmp byte [rax], 0x4d
je 0x46f0e0
mov r9, rbp
mov r8, rsi
mov rdx, rbx
mov rcx, r12
call fcn.0046ffa0
xor r8d, r8d
mov qword [rsp + 0x30], rbx
mov edx, r14d
mov qword [rsp + 0x28], rbp
mov r9d, 0x18
mov rcx, r12
mov qword [rsp + 0x20], rsi
call fcn.0046fe70
test eax, eax
jne 0x46f220
cmp r14d, 0xffffffff
jne 0x46f0d0
nop dword [rax + rax]
xor eax, eax
add rsp, 0x298
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
mov r8, rbp
mov rdx, rsi
mov ecx, r14d
call fcn.0046ee30
jmp 0x46f0b8
cmp byte [rax + 1], 0x5a
jne 0x46f071
mov edi, dword [rax + 0x3c]
mov r9, rbp
mov r8, rsi
mov rdx, rbx
mov rcx, r12
call fcn.0046ffa0
mov qword [rsp + 0x30], rbx
mov edx, r14d
mov rcx, r12
mov qword [rsp + 0x28], rbp
mov r9d, 0x18
mov qword [rsp + 0x20], rsi
mov r8, rdi
call fcn.0046fe70
test eax, eax
je 0x46f0ad
test rdi, rdi
je 0x46f220
mov rax, qword [rsp + 0xd0]
mov r9, rbp
mov r8, rsi
mov rcx, r12
lea rdx, [rax + 4]
mov r13d, dword [rax]
mov rax, qword [rax + 4]
mov qword [rsp + 0xb0], rax
mov rax, qword [rdx + 8]
mov qword [rsp + 0xb8], rax
mov eax, dword [rdx + 0x10]
mov rdx, rbx
mov dword [rsp + 0xc0], eax
call fcn.0046ffa0
cmp r13d, 0x4550
jne 0x46f231
mov eax, dword [rsp + 0xbc]
mov qword [rsp + 0x28], rbp
lea r8, [rdi + 0x18]
mov edx, r14d
movzx ebx, word [rsp + 0xb2]
lea rcx, [rsp + 0xf0]
mov qword [rsp + 0x20], rsi
movzx r13d, word [rsp + 0xc0]
mov qword [rsp + 0x60], rcx
mov qword [rsp + 0x30], rcx
mov rcx, r12
mov dword [rsp + 0x50], eax
movzx eax, bx
lea rax, [rax + rax*4]
lea r9, [r13 + rax*8]
call fcn.0046fe70
test eax, eax
je 0x46f0ad
mov rax, qword [rsp + 0xf0]
cmp r13w, 0x20
lea rdi, [rax + r13]
mov qword [rsp + 0x70], rdi
jbe 0x46f24f
movzx edx, word [rax]
cmp dx, 0x10b
je 0x46f822
cmp dx, 0x20b
jne 0x46f86f
mov dword [rsp + 0xa4], 1
mov rax, qword [rax + 0x18]
mov qword [rsp + 0xa8], rax
jmp 0x46f266
mov r9, rbp
mov r8, rsi
mov rdx, rbx
mov rcx, r12
call fcn.0046ffa0
lea rdx, str.executable_file_is_not_COFF
xor r8d, r8d
mov rcx, rbp
call rsi
cmp r14d, 0xffffffff
je 0x46f0b8
jmp 0x46f0d0
mov qword [rsp + 0xa8], 0
mov dword [rsp + 0xa4], 0
mov edx, dword [rsp + 0xb8]
movzx eax, bx
mov dword [rsp + 0x58], eax
test edx, edx
je 0x46f31e
mov eax, dword [rsp + 0x50]
mov edi, edx
mov qword [rsp + 0x28], rbp
mov edx, r14d
lea r15, [rsp + 0x130]
mov qword [rsp + 0x20], rsi
mov r8, rdi
mov rcx, r12
mov qword [rsp + 0x30], r15
lea eax, [rax + rax*8]
lea r13d, [rax + rax]
lea r9, [r13 + 4]
mov qword [rsp + 0x78], r13
call fcn.0046fe70
test eax, eax
je 0x46f87e
mov rax, qword [rsp + 0x130]
mov dword [rsp + 0x6c], 0
mov eax, dword [rax + r13]
cmp rax, 4
mov qword [rsp + 0x88], rax
ja 0x46faa8
mov r10d, dword [rsp + 0x58]
lea rdi, [rsp + 0x170]
xor eax, eax
mov ecx, 0x12
mov qword [rsp + 0x80], rdi
rep stosq qword [rdi], rax
test r10d, r10d
je 0x46fc54
mov dword [rsp + 0xa0], 1
mov edx, dword [rsp + 0x50]
jmp 0x46f36c
lea rdi, [rsp + 0x170]
xor eax, eax
mov ecx, 0x12
mov qword [rsp + 0x80], rdi
rep stosq qword [rdi], rax
mov ecx, dword [rsp + 0x58]
test ecx, ecx
je 0x46fbe0
mov dword [rsp + 0xa0], 0
mov qword [rsp + 0x78], 0
mov qword [rsp + 0x88], 0
mov dword [rsp + 0x6c], 0
mov r15, qword [rsp + 0x70]
mov qword [rsp + 0x2f0], rsi
lea r13, [0x005844a0]
mov dword [rsp + 0x50], 0
mov word [rsp + 0x90], bx
mov dword [rsp + 0x98], edx
mov qword [rsp + 0x2e0], r12
mov rsi, r15
mov dword [rsp + 0x2e8], r14d
mov qword [rsp + 0x2f8], rbp
nop word [rax + rax]
xor r14d, r14d
xor edi, edi
cmp byte [rsi], 0x2f
je 0x46f7f0
mov r12, qword [rsp + 0x110]
xor r15d, r15d
mov rbx, qword [rsp + 0x120]
add r12, r14
test edi, edi
mov rcx, qword [r13 + r15*8]
mov ebp, r15d
jne 0x46f432
xor eax, eax
nop word [rax + rax]
movzx edx, byte [rcx + rax]
cmp dl, byte [rsi + rax]
jne 0x46f7a0
test dl, dl
je 0x46f7bb
add rax, 1
cmp rax, 8
jne 0x46f3f0
xor eax, eax
cmp byte [rcx + 8], 0
sete al
jmp 0x46f447
add r15, 1
cmp r15, 9
je 0x46f459
mov rcx, qword [r13 + r15*8]
mov ebp, r15d
cmp r14, rbx
jae 0x46f420
mov rdx, r12
call sub.msvcrt.dll_strcmp
test eax, eax
sete al
movzx eax, al
test eax, eax
jne 0x46f7bb
add r15, 1
cmp r15, 9
jne 0x46f3dc
add dword [rsp + 0x50], 1
add rsi, 0x28
mov eax, dword [rsp + 0x50]
mov edi, dword [rsp + 0x58]
cmp eax, edi
jb 0x46f3b8
mov edx, dword [rsp + 0x98]
movzx ebx, word [rsp + 0x90]
mov r12, qword [rsp + 0x2e0]
mov r14d, dword [rsp + 0x2e8]
test edx, edx
mov rsi, qword [rsp + 0x2f0]
mov rbp, qword [rsp + 0x2f8]
je 0x46f638
mov r9, rbp
mov r8, rsi
mov edx, 0x18
mov rcx, r12
call fcn.0046e850
test rax, rax
mov qword [rsp + 0x50], rax
je 0x46f8c0
mov rax, qword [rsp + 0x110]
movabs rdx, 0xe38e38e38e38e38f
mov r13, qword [rsp + 0x130]
mov qword [rsp + 0x90], rax
mov rax, qword [rsp + 0x78]
mul rdx
mov rdi, rdx
shr rdi, 4
cmp qword [rsp + 0x78], 0x11
jbe 0x46fcb9
mov r11, qword [rsp + 0x88]
xor r10d, r10d
xor r15d, r15d
xor edx, edx
jmp 0x46f551
mov r8d, dword [rax + 4]
cmp r8, r11
jae 0x46f896
shr cx, 4
cmp cx, 2
jne 0x46f53f
cmp r9b, 1
sbb r15, 0xffffffffffffffff
movzx eax, byte [rax + 0x11]
lea rdx, [rdx + rax + 1]
cmp rdx, rdi
jae 0x46f957
lea rax, [rdx + rdx*8]
lea rax, [r13 + rax*2]
movzx r8d, word [rax + 0xc]
movzx ecx, word [rax + 0xe]
test r8w, r8w
setg r9b
cmp bx, r8w
jae 0x46f57a
test r9b, r9b
jne 0x46f896
cmp byte [rax], 0
je 0x46f520
shr cx, 4
cmp cx, 2
jne 0x46f53f
test r9b, r9b
je 0x46f53f
add r15, 1
xor ecx, ecx
cmp byte [rax + rcx], 0
je 0x46f5a4
add rcx, 1
cmp rcx, 8
jne 0x46f594
lea r10, [rcx + r10 + 1]
jmp 0x46f53f
mov r15, qword [rsp + 0x98]
mov rsi, qword [rsp + 0x2f0]
mov rdi, qword [rsp + 0x58]
mov r8d, 0x10
mov rdx, r15
mov qword [r11], 0
mov qword [r11 + 8], 0xffffffffffffffff
lea r9, [0x0046eec0]
mov rcx, rdi
call fcn.00476630
mov rax, qword [rsp + 0x50]
lea rcx, [r12 + 0x30]
mov qword [rax], 0
mov qword [rax + 8], rdi
mov qword [rax + 0x10], r15
mov rax, qword [rsp + 0x308]
mov dword [rax], 1
mov r13d, dword [r12 + 8]
test r13d, r13d
je 0x46fa82
mov rdx, rcx
jmp 0x46f624
mov rdx, rax
mov rax, qword [rdx]
test rax, rax
jne 0x46f621
mov rdi, qword [rsp + 0x50]
lock cmpxchg qword [rdx], rdi
jne 0x46f61c
mov rdx, qword [rsp + 0x60]
mov r9, rbp
mov r8, rsi
mov rcx, r12
call fcn.0046ffa0
mov edi, dword [rsp + 0xa0]
test edi, edi
jne 0x46f804
mov rdx, qword [rsp + 0x80]
lea rdi, [rsp + 0x200]
xor r9d, r9d
xor ebx, ebx
nop
mov rcx, qword [rdx + 8]
test rcx, rcx
je 0x46f69a
mov rax, qword [rdx]
cmp rbx, rax
mov r8, rax
cmovle r8, rbx
test rbx, rbx
mov rbx, r8
cmove rbx, rax
add rax, rcx
cmp r9, rax
cmovl r9, rax
add rdx, 0x10
cmp rdx, rdi
jne 0x46f670
test rbx, rbx
je 0x46f83d
test r9, r9
je 0x46f83d
sub r9, rbx
mov qword [rsp + 0x28], rbp
mov r8, rbx
mov edx, r14d
lea r13, [rsp + 0x150]
mov qword [rsp + 0x20], rsi
mov rcx, r12
mov qword [rsp + 0x30], r13
call fcn.0046fe70
test eax, eax
je 0x46f930
mov r8, rbp
mov rdx, rsi
mov ecx, r14d
call fcn.0046ee30
test eax, eax
je 0x46fba0
mov r10, qword [rsp + 0x80]
lea rax, [rsp + 0x178]
mov r9, qword [rsp + 0x150]
lea rdx, [rsp + 0x248]
add r10, 0x98
mov r8, qword [rax]
xor ecx, ecx
test r8, r8
mov qword [rdx], r8
je 0x46f739
mov rcx, r9
sub rcx, rbx
add rcx, qword [rax - 8]
add rax, 0x10
mov qword [rdx - 0x48], rcx
add rdx, 8
cmp r10, rax
jne 0x46f722
mov rax, qword [rsp + 0x300]
xor r9d, r9d
xor edx, edx
mov r8, rdi
mov qword [rsp + 0x40], 0
mov rcx, r12
mov qword [rsp + 0x30], rbp
mov qword [rsp + 0x28], rsi
mov qword [rsp + 0x38], rax
mov qword [rsp + 0x20], 0
call fcn.00475740
test eax, eax
je 0x46fc83
mov rax, qword [rsp + 0x310]
mov dword [rax], 1
jmp 0x46f865
add r15, 1
cmp r15, 9
je 0x46f459
mov rcx, qword [r13 + r15*8]
mov ebp, r15d
jmp 0x46f3e8
mov eax, dword [rsi + 0x14]
movsxd r9, ebp
shl r9, 4
mov edx, dword [rsi + 0x10]
mov qword [rsp + r9 + 0x170], rax
mov eax, dword [rsi + 8]
cmp eax, edx
cmova rax, rdx
mov qword [rsp + r9 + 0x178], rax
jmp 0x46f459
lea rcx, [rsi + 1]
call sub.msvcrt.dll_atoi
mov r14d, eax
mov rdi, r14
jmp 0x46f3c6
lea r15, [rsp + 0x130]
mov r9, rbp
mov r8, rsi
mov rdx, r15
mov rcx, r12
call fcn.0046ffa0
jmp 0x46f65a
mov dword [rsp + 0xa4], 0
mov eax, dword [rax + 0x1c]
mov qword [rsp + 0xa8], rax
jmp 0x46f266
mov r8, rbp
mov rdx, rsi
mov ecx, r14d
call fcn.0046ee30
test eax, eax
je 0x46f930
mov rax, qword [rsp + 0x300]
lea rdi, [0x0046ee80]
mov qword [rax], rdi
mov eax, 1
jmp 0x46f0ba
lea rdx, str.bad_magic_in_PE_optional_header
xor r8d, r8d
mov rcx, rbp
call rsi
mov rdx, qword [rsp + 0x60]
mov r9, rbp
mov r8, rsi
mov rcx, r12
call fcn.0046ffa0
jmp 0x46f0ad
lea rdx, str.invalid_section_or_offset_in_coff_symbol
xor r8d, r8d
mov rcx, rbp
call rsi
mov rdx, qword [rsp + 0x50]
mov qword [rsp + 0x20], rbp
mov r9, rsi
mov rcx, r12
mov r8d, 0x18
call fcn.0046e8a0
mov rdx, qword [rsp + 0x60]
mov r9, rbp
mov r8, rsi
mov rcx, r12
call fcn.0046ffa0
mov r9d, dword [rsp + 0x6c]
test r9d, r9d
je 0x46fd1e
mov r8, rsi
mov r9, rbp
mov rcx, r12
lea rdx, [rsp + 0x110]
call fcn.0046ffa0
mov r8d, dword [rsp + 0xa0]
test r8d, r8d
je 0x46f0ad
lea r15, [rsp + 0x130]
mov r9, rbp
mov r8, rsi
mov rdx, r15
mov rcx, r12
call fcn.0046ffa0
cmp r14d, 0xffffffff
je 0x46f0b8
jmp 0x46f0d0
mov ebx, dword [rsp + 0x6c]
test ebx, ebx
je 0x46f0ad
lea rdx, [rsp + 0x110]
mov r9, rbp
mov r8, rsi
mov rcx, r12
call fcn.0046ffa0
jmp 0x46f0ad
lea rax, [r15 + 1]
mov r9, rbp
mov r8, rsi
mov qword [rsp + 0x98], r10
shl rax, 4
mov rcx, r12
mov rdx, rax
mov qword [rsp + 0x78], rax
call fcn.0046e850
test rax, rax
mov qword [rsp + 0x58], rax
je 0x46f8a5
mov r10, qword [rsp + 0x98]
xor eax, eax
test r10, r10
jne 0x46fb5f
mov qword [rsp + 0x98], r15
mov r11, qword [rsp + 0x58]
xor ecx, ecx
mov r15, rax
mov qword [rsp + 0x2f0], rsi
mov rsi, qword [rsp + 0x88]
jmp 0x46f9e7
shr dx, 4
cmp dx, 2
jne 0x46f9d5
test r9b, r9b
jne 0x46fb03
movzx eax, byte [rax + 0x11]
lea rcx, [rcx + rax + 1]
cmp rcx, rdi
jae 0x46f5ab
lea rax, [rcx + rcx*8]
lea rax, [r13 + rax*2]
movsx r8, word [rax + 0xc]
movzx edx, word [rax + 0xe]
test r8w, r8w
setg r9b
cmp bx, r8w
jae 0x46fa10
test r9b, r9b
jne 0x4bdfd0
cmp byte [rax], 0
jne 0x46f9c2
mov r10d, dword [rax + 4]
cmp r10, rsi
jae 0x4bdfd0
shr dx, 4
cmp dx, 2
jne 0x46f9d5
test r9b, r9b
je 0x46f9d5
mov rdx, qword [rsp + 0x90]
add rdx, r10
mov r9d, dword [rsp + 0xa4]
test r9d, r9d
jne 0x46fa56
xor r9d, r9d
cmp byte [rdx], 0x5f
sete r9b
add rdx, r9
mov r10, qword [rsp + 0x70]
lea r8, [r8 + r8*4]
mov qword [r11], rdx
add r11, 0x10
mov edx, dword [rax + 8]
add edx, dword [r10 + r8*8 - 0x1c]
mov r10, qword [rsp + 0xa8]
add rdx, r10
mov qword [r11 - 8], rdx
jmp 0x46f9d5
mov rax, qword [r12 + 0x30]
test rax, rax
je 0x46fcee
mov rdx, rax
mov rax, qword [rax]
test rax, rax
jne 0x46fa90
mov rax, qword [rsp + 0x50]
mov qword [rdx], rax
jmp 0x46f638
lea rax, [rsp + 0x110]
mov qword [rsp + 0x28], rbp
mov edx, r14d
mov rcx, r12
mov qword [rsp + 0x30], rax
mov rax, qword [rsp + 0x78]
mov r9, qword [rsp + 0x88]
mov qword [rsp + 0x20], rsi
lea r8, [rdi + rax]
call fcn.0046fe70
mov dword [rsp + 0x6c], 1
test eax, eax
jne 0x46f2e5
mov rdx, qword [rsp + 0x60]
mov r9, rbp
mov r8, rsi
mov rcx, r12
call fcn.0046ffa0
jmp 0x46f910
xor edx, edx
cmp byte [rax + rdx], 0
je 0x46fce5
add rdx, 1
cmp rdx, 8
jne 0x46fb05
mov r10d, 9
cmp edx, 8
mov r8d, edx
jae 0x46fc00
test dl, 4
jne 0x46fcf8
test r8d, r8d
je 0x46fb4a
movzx r9d, byte [rax]
test r8b, 2
mov byte [r15], r9b
jne 0x46fd0d
mov byte [r15 + rdx], 0
mov rdx, r15
movsx r8, word [rax + 0xc]
add r15, r10
jmp 0x46fa3c
mov r9, rbp
mov r8, rsi
mov rdx, r10
mov rcx, r12
call fcn.0046e850
test rax, rax
jne 0x46f99e
mov r8, qword [rsp + 0x78]
mov qword [rsp + 0x20], rbp
mov r9, rsi
mov rcx, r12
mov rdx, qword [rsp + 0x58]
call fcn.0046e8a0
jmp 0x46f8a5
mov r11d, dword [rsp + 0x6c]
test r11d, r11d
je 0x46fbc0
lea rdx, [rsp + 0x110]
mov r9, rbp
mov r8, rsi
mov rcx, r12
call fcn.0046ffa0
mov r9, rbp
mov r8, rsi
mov rdx, r13
mov rcx, r12
call fcn.0046ffa0
cmp r14d, 0xffffffff
je 0x46f0b8
jmp 0x46f0d0
mov rdx, qword [rsp + 0x60]
mov r9, rbp
mov r8, rsi
mov rcx, r12
call fcn.0046ffa0
mov dword [rsp + 0x6c], 0
jmp 0x46f65a
mov r8d, edx
mov r9, qword [rax + r8 - 8]
mov qword [r15 + r8 - 8], r9
lea r8d, [rdx - 1]
cmp r8d, 8
jb 0x46fb4a
and r8d, 0xfffffff8
mov qword [rsp + 0x88], rdx
mov dword [rsp + 0x78], r8d
xor r8d, r8d
mov r9d, r8d
add r8d, 8
mov rdx, qword [rax + r9]
mov qword [r15 + r9], rdx
mov edx, dword [rsp + 0x78]
cmp r8d, edx
jb 0x46fc2f
mov rdx, qword [rsp + 0x88]
jmp 0x46fb4a
mov dword [rsp + 0xa0], 1
mov eax, dword [rsp + 0x50]
test eax, eax
jne 0x46f4a9
mov rdx, qword [rsp + 0x60]
mov r9, rbp
mov r8, rsi
mov rcx, r12
call fcn.0046ffa0
jmp 0x46f80c
mov r10d, dword [rsp + 0x6c]
test r10d, r10d
je 0x46fca3
lea rdx, [rsp + 0x110]
mov r9, rbp
mov r8, rsi
mov rcx, r12
call fcn.0046ffa0
mov r9, rbp
mov r8, rsi
mov rdx, r13
mov rcx, r12
call fcn.0046ffa0
jmp 0x46f0b8
mov r9, rbp
mov r8, rsi
mov edx, 0x10
mov rcx, r12
call fcn.0046e850
test rax, rax
mov r11, rax
je 0x46f8a5
mov qword [rsp + 0x58], rax
xor r15d, r15d
jmp 0x46f5bb
lea r10, [rdx + 1]
jmp 0x46fb1f
lea rdx, [r12 + 0x30]
jmp 0x46fa9b
mov r9d, dword [rax]
mov dword [r15], r9d
mov r9d, dword [rax + r8 - 4]
mov dword [r15 + r8 - 4], r9d
jmp 0x46fb4a
movzx r9d, word [rax + r8 - 2]
mov word [r15 + r8 - 2], r9w
jmp 0x46fb4a
cmp dword [rsp + 0xa0], 0
je 0x46f0ad
lea rdx, [rsp + 0x130]
mov r9, rbp
mov r8, rsi
mov rcx, r12
call fcn.0046ffa0
jmp 0x46f0ad
call sub.msvcrt.dll_abort
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
call sub.msvcrt.dll_abort
nop
call sub.msvcrt.dll_abort
nop
call sub.msvcrt.dll_abort
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov qword [rbx + 0x18], rdx
lea rcx, [rsp + 0x34]
lea rdx, [0x00585370]
call sub.msvcrt.dll_sprintf
mov rax, qword [0x10]
ud2