Function at 0x180015620
Capabilities:
Parse pe header

Disassembly:
mov qword [rsp + 8], rcx
sub rsp, 0x308
mov qword [rsp + 0x58], 0
mov qword [rsp + 0x48], 0
mov qword [rsp + 0xb0], 0
mov qword [rsp + 0x70], 0
mov qword [rsp + 0xa8], 0
mov qword [rsp + 0xb8], 0
mov qword [rsp + 0x98], 0
mov dword [rsp + 0xc8], 0
mov qword [rsp + 0x88], 0
mov qword [rsp + 0xd8], 0
mov dword [rsp + 0x6c], 0
mov dword [rsp + 0x94], 0
mov qword [rsp + 0x80], 0
mov qword [rsp + 0xe0], 0
mov dword [rsp + 0x90], 0
xor eax, eax
mov word [rsp + 0x38], ax
xor eax, eax
mov word [rsp + 0x40], ax
xor eax, eax
mov word [rsp + 0x34], ax
mov qword [rsp + 0xd0], 0
mov dword [rsp + 0x68], 0
mov qword [rsp + 0xc0], 0
mov qword [rsp + 0x60], 0
mov dword [rsp + 0x3c], 0
mov dword [rsp + 0x30], 0
mov qword [rsp + 0x78], 0
mov qword [rsp + 0xa0], 0
mov rcx, qword [rsp + 0x310]
call qword [0x18001ad38]
mov qword [rsp + 0x58], rax
cmp qword [rsp + 0x58], 0
jne 0x180015758
mov eax, 1
jmp 0x1800161d8
mov rax, qword [rsp + 0x58]
mov qword [rsp + 0xa8], rax
js 0x180015791
add byte [rax], al
add byte [rax + 0x2a], bh
push rax
push rdx
push rsi
pop rsi
pop rdx
pop rax
jns 0x180015791
out 0x6e, eax
mov dword [rcx - 0x19], 0x41631be7
sahf
jno 0x180015762
out 0xfd, eax
invalid
mov rax, qword [rsp + 0xa8]
movzx eax, word [rax]
cmp eax, 0x5a4d
je 0x1800157ad
mov eax, 1
jmp 0x1800161d8
mov rax, qword [rsp + 0xa8]
movsxd rax, dword [rax + 0x3c]
mov rcx, qword [rsp + 0xa8]
add rcx, rax
mov rax, rcx
mov qword [rsp + 0xb8], rax
jg 0x1800157fb
push rax
push rax
nop
pop rax
pop rax
jle 0x1800157fb
out 0x71, eax
outsb dx, byte [rsi]
invalid
mov rax, qword [rsp + 0xb8]
cmp dword [rax], 0x4550
je 0x180015815
mov eax, 1
jmp 0x1800161d8
mov r8d, 0x200
xor edx, edx
lea rcx, [rsp + 0x100]
call qword [0x18001ace8]
mov r8d, 0x1ff
lea rdx, [rsp + 0x100]
mov rcx, qword [rsp + 0x58]
call qword [0x18001ad60]
test eax, eax
jne 0x180015852
mov eax, 1
jmp 0x1800161d8
xor edx, edx
lea rcx, [rsp + 0x100]
call fcn.180005a40
mov qword [rsp + 0x48], rax
cmp qword [rsp + 0x48], 0
jne 0x180015878
mov eax, 1
jmp 0x1800161d8
mov rax, qword [rsp + 0x48]
mov qword [rsp + 0xb0], rax
jbe 0x1800158b1
push rax
nop
pop rax
ja 0x1800158b1
invalid
mov rax, qword [rsp + 0xb0]
movzx eax, word [rax]
cmp eax, 0x5a4d
je 0x1800158e0
mov r8d, 0x8000
xor edx, edx
mov rcx, qword [rsp + 0x48]
call qword [0x18001ad70]
mov eax, 1
jmp 0x1800161d8
mov rax, qword [rsp + 0xb0]
movsxd rax, dword [rax + 0x3c]
mov rcx, qword [rsp + 0xb0]
add rcx, rax
mov rax, rcx
mov qword [rsp + 0x70], rax
jae 0x18001592b
push rbx
push rbx
nop
pop rbx
pop rbx
jb 0x18001592b
invalid
mov rax, qword [rsp + 0x70]
cmp dword [rax], 0x4550
je 0x180015955
mov r8d, 0x8000
xor edx, edx
mov rcx, qword [rsp + 0x48]
call qword [0x18001ad70]
mov eax, 1
jmp 0x1800161d8
mov dword [rsp + 0x50], 0
jmp 0x180015969
mov eax, dword [rsp + 0x50]
inc eax
mov dword [rsp + 0x50], eax
mov rax, qword [rsp + 0x70]
movzx eax, word [rax + 6]
cmp dword [rsp + 0x50], eax
jae 0x180015bb1
mov rax, qword [rsp + 0x70]
movzx eax, word [rax + 0x14]
mov rcx, qword [rsp + 0x70]
lea rax, [rcx + rax + 0x18]
mov ecx, dword [rsp + 0x50]
imul rcx, rcx, 0x28
add rax, rcx
mov qword [rsp + 0x98], rax
je 0x1800159ce
jne 0x1800159ce
cli
sbb edi, dword [rbp + 0x1b]
std
sbb ebp, dword [rsi + 0x41]
out 0x1b, eax
invalid
mov r8d, 0x10
xor edx, edx
lea rcx, [rsp + 0xe8]
call qword [0x18001ace8]
jae 0x180015a10
push rbx
nop
pop rbx
jb 0x180015a10
out 0xe7, eax
call [r15]
cli
sahf
mov edi, 0x41631fff
out 0x1f, eax
invalid
mov rax, qword [rsp + 0x98]
mov r8d, 8
mov rdx, rax
lea rcx, [rsp + 0xe8]
call qword [0x18001ad78]
jnp 0x180015a5b
push rdx
push rdi
nop
pop rdi
pop rdx
jp 0x180015a5b
invalid
jg 0x180015a87
push rsi
nop
pop rsi
jle 0x180015a87
sahf
cli
out 0x41, eax
sbb eax, edi
cli
jno 0x180015a68
cli
out 0x7d, eax
out 0x1f, eax
outsb dx, byte [rsi]
sbb esi, dword [rcx + 0x1f]
invalid
lea rdx, [0x18001af60]
lea rcx, [rsp + 0xe8]
call qword [0x18001b028]
test eax, eax
jne 0x180015bac
mov dword [rsp + 0xc8], 1
jg 0x180015adb
nop
jle 0x180015adb
sbb ecx, dword [rax + 0x71]
movsxd rbx, dword [rdi]
cli
sbb ebp, dword [r14 - 1]
jno 0x180015a60
jmp rdi
mov rax, qword [rsp + 0x98]
mov eax, dword [rax + 0xc]
mov rcx, qword [rsp + 0x58]
add rcx, rax
mov rax, rcx
mov qword [rsp + 0x88], rax
jae 0x180015b25
jb 0x180015b25
jno 0x180015b6d
jno 0x180015b64
out 0xff, eax
sbb esp, edi
invalid
mov rax, qword [rsp + 0x98]
mov eax, dword [rax + 0x14]
mov rcx, qword [rsp + 0x48]
add rcx, rax
mov rax, rcx
mov qword [rsp + 0xd8], rax
jle 0x180015b6f
push rsi
nop
pop rsi
jg 0x180015b6f
invalid
cli
sahf
invalid
out 0xfa, eax
mov rax, qword [rsp + 0x98]
mov eax, dword [rax + 0x10]
mov dword [rsp + 0x6c], eax
jo 0x180015baa
push rdi
push rdx
push rsp
nop
pop rsp
pop rdx
pop rdi
jno 0x180015baa
jno 0x180015bcc
invalid
jmp 0x180015bb1
jmp 0x18001595f
cmp qword [rsp + 0x88], 0
jne 0x180015bd9
mov r8d, 0x8000
xor edx, edx
mov rcx, qword [rsp + 0x48]
call qword [0x18001ad70]
push rcx
add byte [rax], al
mov eax, 1
jmp 0x1800161d8
mov rax, qword [rsp + 0x70]
mov rax, qword [rax + 0x30]
cmp qword [rsp + 0x58], rax
je 0x18001603a
mov rax, qword [rsp + 0x70]
mov rax, qword [rax + 0x30]
mov rcx, qword [rsp + 0x58]
sub rcx, rax
mov rax, rcx
mov qword [rsp + 0xd0], rax
mov eax, 8
imul rax, rax, 5
mov rcx, qword [rsp + 0xb8]
cmp dword [rcx + rax + 0x8c], 0
je 0x18001603a
mov eax, 8
imul rax, rax, 5
mov rcx, qword [rsp + 0xb8]
mov eax, dword [rcx + rax + 0x88]
mov rcx, qword [rsp + 0x58]
add rcx, rax
mov rax, rcx
mov ecx, dword [rsp + 0x68]
add rax, rcx
mov qword [rsp + 0x80], rax
jbe 0x180015c86
nop
ja 0x180015c86
outsb dx, byte [rsi]
cli
invalid
mov rax, qword [rsp + 0x80]
cmp dword [rax], 0
jne 0x180015c98
jmp 0x18001603a
jge 0x180015cc4
nop
jl 0x180015cc4
jmp [rsi + 0x1b]
mov rax, qword [rsp + 0x80]
mov eax, dword [rax]
mov rcx, qword [rsp + 0x58]
add rcx, rax
mov rax, rcx
mov qword [rsp + 0xe0], rax
ja 0x180015d0d
push rsp
push rdx
push rbx
nop
pop rbx
pop rdx
pop rsp
jbe 0x180015d0d
jno 0x180015d6b
sahf
invalid
mov rax, qword [rsp + 0x80]
mov eax, dword [rax + 4]
sub rax, 8
xor edx, edx
mov ecx, 2
div rcx
mov dword [rsp + 0x90], eax
js 0x180015d59
push rsp
push rbp
push rbp
push rcx
pop rcx
pop rbp
pop rbp
pop rsp
jns 0x180015d59
invalid
mov dword [rsp + 0x54], 0
jmp 0x180015d6d
mov eax, dword [rsp + 0x54]
inc eax
mov dword [rsp + 0x54], eax
and al, 0x54
mov eax, dword [rsp + 0x90]
cmp dword [rsp + 0x54], eax
jae 0x180015fc6
mov eax, dword [rsp + 0x54]
mov rcx, qword [rsp + 0x80]
movzx eax, word [rcx + rax*2 + 8]
mov word [rsp + 0x38], ax
jbe 0x180015dc0
push rdi
push rbx
pop rbx
pop rdi
ja 0x180015dc0
outsb dx, byte [rsi]
sahf
jmp rdi
movzx eax, word [rsp + 0x38]
and eax, 0xfff
mov word [rsp + 0x40], ax
jle 0x180015dfb
push rsi
nop
pop rsi
jg 0x180015dfb
invalid
movzx eax, word [rsp + 0x38]
cdq
and edx, 0xfff
add eax, edx
sar eax, 0xc
mov word [rsp + 0x34], ax
js 0x180015e3d
push rdx
pop rdx
jns 0x180015e3d
cli
std
std
cli
invalid
movzx eax, word [rsp + 0x40]
mov rcx, qword [rsp + 0xe0]
add rcx, rax
mov rax, rcx
mov qword [rsp + 0xc0], rax
mov rax, qword [rsp + 0x88]
cmp qword [rsp + 0xc0], rax
jb 0x180015fc1
mov eax, dword [rsp + 0x6c]
mov rcx, qword [rsp + 0x88]
add rcx, rax
mov rax, rcx
cmp qword [rsp + 0xc0], rax
jae 0x180015fc1
mov rax, qword [rsp + 0xc0]
mov qword [rsp + 0x60], rax
mov rax, qword [rsp + 0x88]
mov rcx, qword [rsp + 0x60]
sub rcx, rax
mov rax, rcx
mov qword [rsp + 0x60], rax
mov rax, qword [rsp + 0xd8]
mov rcx, qword [rsp + 0x60]
add rcx, rax
mov rax, rcx
mov qword [rsp + 0x60], rax
movzx eax, word [rsp + 0x34]
test eax, eax
je 0x180015fc1
movzx eax, word [rsp + 0x34]
cmp eax, 3
jne 0x180015f28
jg 0x180015f0e
push rsi
nop
pop rsi
jle 0x180015f0e
std
out 0x1f, eax
invalid
mov rax, qword [rsp + 0x60]
mov eax, dword [rax]
add eax, dword [rsp + 0xd0]
mov rcx, qword [rsp + 0x60]
mov dword [rcx], eax
jmp 0x180015fc1
movzx eax, word [rsp + 0x34]
cmp eax, 0xa
jne 0x180015f78
jo 0x180015f5e
jno 0x180015f5e
std
std
out 0x71, eax
invalid
mov rax, qword [rsp + 0x60]
mov rax, qword [rax]
add rax, qword [rsp + 0xd0]
mov rcx, qword [rsp + 0x60]
mov qword [rcx], rax
jmp 0x180015fc1
jae 0x180015fa4
push rsp
push rdi
push rsi
nop
pop rsi
pop rdi
pop rsp
jb 0x180015fa4
call [rdi]
out 0xfd, eax
jge 0x180015ff7
dec dword [rax + 0x41]
std
invalid
mov r8d, 0x8000
xor edx, edx
mov rcx, qword [rsp + 0x48]
call qword [0x18001ad70]
mov eax, 1
jmp 0x1800161d8
jmp 0x180015d63
jle 0x180015ff2
push rbx
push rbp
push rsp
push rdx
pop rdx
pop rsp
pop rbp
pop rbx
jg 0x180015ff2
sbb esp, edi
invalid
mov rax, qword [rsp + 0x80]
mov eax, dword [rax + 4]
mov ecx, dword [rsp + 0x68]
add byte [rax], al
add byte [rbx + 0x4c8b0440], cl
and al, 0x68
add ecx, eax
mov eax, ecx
mov dword [rsp + 0x68], eax
jne 0x180016035
nop
je 0x180016035
std
invalid
jmp 0x180015c28
mov eax, dword [rsp + 0x6c]
mov dword [rsp + 0x3c], eax
mov rax, qword [rsp + 0x88]
mov qword [rsp + 0x78], rax
mov rax, qword [rsp + 0xd8]
mov qword [rsp + 0xa0], rax
cmp dword [rsp + 0x3c], 0
jne 0x18001606b
jmp 0x1800161c3
mov dword [rsp + 0x30], 0x1000
mov eax, dword [rsp + 0x30]
cmp dword [rsp + 0x3c], eax
jae 0x180016085
mov eax, dword [rsp + 0x30]
mov dword [rsp + 0x3c], eax
mov eax, dword [rsp + 0x30]
mov r8d, eax
mov rdx, qword [rsp + 0xa0]
mov rcx, qword [rsp + 0x78]
call qword [0x18001ad68]
test eax, eax
je 0x180016180
call qword [0x18001ad40]
lea rcx, [rsp + 0x94]
mov qword [rsp + 0x20], rcx
mov r9d, 0x40
mov r8d, dword [rsp + 0x30]
mov rdx, qword [rsp + 0x78]
mov rcx, rax
call fcn.1800026e0
test eax, eax
je 0x1800160f3
mov r8d, 0x8000
xor edx, edx
mov rcx, qword [rsp + 0x48]
call qword [0x18001ad70]
mov eax, 1
jmp 0x1800161d8
mov eax, dword [rsp + 0x30]
mov r8d, eax
mov rdx, qword [rsp + 0xa0]
mov rcx, qword [rsp + 0x78]
call qword [0x18001ad78]
jno 0x180016139
push rbp
push rsp
push rsi
nop
pop rsi
pop rsp
pop rbp
jo 0x180016139
invalid
call qword [0x18001ad40]
mov qword [rsp + 0x20], 0
mov r9d, dword [rsp + 0x94]
mov r8d, dword [rsp + 0x30]
mov rdx, qword [rsp + 0x78]
mov rcx, rax
call fcn.1800026e0
test eax, eax
je 0x180016180
mov r8d, 0x8000
xor edx, edx
mov rcx, qword [rsp + 0x48]
call qword [0x18001ad70]
mov eax, 1
jmp 0x1800161d8
mov eax, dword [rsp + 0x30]
mov ecx, dword [rsp + 0x3c]
sub ecx, eax
mov eax, ecx
mov dword [rsp + 0x3c], eax
mov eax, dword [rsp + 0x30]
mov rcx, qword [rsp + 0x78]
add rcx, rax
mov rax, rcx
mov qword [rsp + 0x78], rax
mov eax, dword [rsp + 0x30]
mov rcx, qword [rsp + 0xa0]
add rcx, rax
mov rax, rcx
mov qword [rsp + 0xa0], rax
jmp 0x18001605f
mov r8d, 0x8000
xor edx, edx
mov rcx, qword [rsp + 0x48]
call qword [0x18001ad70]
xor eax, eax
add rsp, 0x308
ret