Function at 0x140159470
Capabilities:
Parse pe header

Disassembly:
mov qword [rsp + 8], rbx
push rdi
sub rsp, 0x20
movzx r9d, byte [rcx]
mov rdi, rdx
mov r10, rcx
lea eax, [r9 - 9]
lea r11, [0x140000000]
cmp eax, 0x75
ja case.0x1401594b3.34
cdqe
mov ebx, 1
movzx eax, byte [r11 + rax + 0x159c2c]
mov r8d, dword [r11 + rax*4 + 0x159bc4]
add r8, r11
jmp r8
movzx eax, byte [r10 + 1]
inc r10
test byte [rax + r11 + 0x1f2380], bl
je 0x1401594e5
nop dword [rax + rax]
movzx eax, byte [r10 + 1]
inc r10
inc ebx
test byte [rax + r11 + 0x1f2380], 1
jne 0x1401594d0
mov dword [rdx], 0x95
mov eax, ebx
mov rbx, qword [rsp + 0x30]
add rsp, 0x20
pop rdi
ret
cmp byte [rcx + 1], 0x2d
jne 0x140159536
mov edx, 2
add r10, rdx
movzx eax, byte [r10]
test eax, eax
je 0x140159523
nop
cmp eax, 0xa
je 0x140159523
movzx eax, byte [r10 + 1]
inc r10
inc edx
test eax, eax
jne 0x140159510
mov dword [rdi], 0x95
mov eax, edx
mov rbx, qword [rsp + 0x30]
add rsp, 0x20
pop rdi
ret
mov dword [rdx], 0x57
mov eax, ebx
mov rbx, qword [rsp + 0x30]
add rsp, 0x20
pop rdi
ret
mov dword [rdx], 0x16
mov eax, ebx
mov rbx, qword [rsp + 0x30]
add rsp, 0x20
pop rdi
ret
mov dword [rdx], 0x17
mov eax, ebx
mov rbx, qword [rsp + 0x30]
add rsp, 0x20
pop rdi
ret
mov dword [rdx], ebx
mov eax, ebx
mov rbx, qword [rsp + 0x30]
add rsp, 0x20
pop rdi
ret
mov dword [rdx], 0x56
mov eax, ebx
mov rbx, qword [rsp + 0x30]
add rsp, 0x20
pop rdi
ret
mov dword [rdx], 0x58
mov eax, ebx
mov rbx, qword [rsp + 0x30]
add rsp, 0x20
pop rdi
ret
cmp byte [rcx + 1], 0x2a
jne 0x1401595ef
movzx eax, byte [rcx + 2]
test al, al
je 0x1401595ef
mov ecx, 3
movzx eax, al
add r10, rcx
nop dword [rax]
cmp eax, 0x2a
jne 0x1401595cb
cmp byte [r10], 0x2f
je 0x1401595da
movzx eax, byte [r10]
test eax, eax
je 0x1401595dc
inc ecx
inc r10
jmp 0x1401595c0
inc ecx
mov dword [rdx], 0x95
mov eax, ecx
mov rbx, qword [rsp + 0x30]
add rsp, 0x20
pop rdi
ret
mov dword [rdx], 0x59
mov eax, ebx
mov rbx, qword [rsp + 0x30]
add rsp, 0x20
pop rdi
ret
mov dword [rdx], 0x5a
mov eax, ebx
mov rbx, qword [rsp + 0x30]
add rsp, 0x20
pop rdi
ret
mov dword [rdx], 0x4c
xor edx, edx
cmp byte [rcx + 1], 0x3d
sete dl
lea eax, [rdx + 1]
mov rbx, qword [rsp + 0x30]
add rsp, 0x20
pop rdi
ret
movzx eax, byte [rcx + 1]
cmp eax, 0x3d
jne 0x140159651
mov dword [rdx], 0x4e
mov eax, 2
mov rbx, qword [rsp + 0x30]
add rsp, 0x20
pop rdi
ret
cmp eax, 0x3e
jne 0x14015966c
mov dword [rdx], 0x4b
mov eax, 2
mov rbx, qword [rsp + 0x30]
add rsp, 0x20
pop rdi
ret
cmp eax, 0x3c
jne 0x140159687
mov dword [rdx], 0x54
mov eax, 2
mov rbx, qword [rsp + 0x30]
add rsp, 0x20
pop rdi
ret
mov dword [rdx], 0x4f
mov eax, ebx
mov rbx, qword [rsp + 0x30]
add rsp, 0x20
pop rdi
ret
movzx eax, byte [rcx + 1]
cmp eax, 0x3d
jne 0x1401596b9
mov dword [rdx], 0x50
mov eax, 2
mov rbx, qword [rsp + 0x30]
add rsp, 0x20
pop rdi
ret
cmp eax, 0x3e
jne 0x1401596d4
mov dword [rdx], 0x55
mov eax, 2
mov rbx, qword [rsp + 0x30]
add rsp, 0x20
pop rdi
ret
mov dword [rdx], 0x4d
mov eax, ebx
mov rbx, qword [rsp + 0x30]
add rsp, 0x20
pop rdi
ret
cmp byte [rcx + 1], 0x3d
mov eax, 2
je 0x140159706
mov r8d, 0x94
mov dword [rdx], r8d
mov rbx, qword [rsp + 0x30]
add rsp, 0x20
pop rdi
ret
mov dword [rdx], 0x4b
mov rbx, qword [rsp + 0x30]
add rsp, 0x20
pop rdi
ret
cmp byte [rcx + 1], 0x7c
je 0x140159730
mov dword [rdx], 0x53
mov eax, ebx
mov rbx, qword [rsp + 0x30]
add rsp, 0x20
pop rdi
ret
mov dword [rdx], 0x5b
mov eax, 2
mov rbx, qword [rsp + 0x30]
add rsp, 0x20
pop rdi
ret
mov dword [rdx], 0x19
mov eax, ebx
mov rbx, qword [rsp + 0x30]
add rsp, 0x20
pop rdi
ret
mov dword [rdx], 0x52
mov eax, ebx
mov rbx, qword [rsp + 0x30]
add rsp, 0x20
pop rdi
ret
mov dword [rdx], 0x5d
mov eax, ebx
mov rbx, qword [rsp + 0x30]
add rsp, 0x20
pop rdi
ret
movzx edx, byte [rcx + 1]
inc rcx
test edx, edx
je 0x1401597b6
add r10, 2
nop
cmp edx, r9d
jne 0x1401597a6
movzx eax, byte [r10]
cmp eax, r9d
jne 0x1401597b6
inc ebx
inc r10
inc rcx
movzx edx, byte [rcx + 1]
inc rcx
inc ebx
inc r10
test edx, edx
jne 0x140159790
cmp edx, 0x27
jne 0x1401597cf
mov dword [rdi], 0x5e
lea eax, [rbx + 1]
mov rbx, qword [rsp + 0x30]
add rsp, 0x20
pop rdi
ret
test edx, edx
je 0x1401597e8
mov eax, 0x1a
mov dword [rdi], eax
lea eax, [rbx + 1]
mov rbx, qword [rsp + 0x30]
add rsp, 0x20
pop rdi
ret
mov r8d, 0x94
mov eax, ebx
mov dword [rdi], r8d
mov rbx, qword [rsp + 0x30]
add rsp, 0x20
pop rdi
ret
movzx eax, byte [rcx + 1]
test byte [rax + r11 + 0x1f2380], 4
jne case.0x1401594b3.24
mov dword [rdx], 0x76
mov eax, ebx
mov rbx, qword [rsp + 0x30]
add rsp, 0x20
pop rdi
ret
mov dword [rdx], 0x81
xor edx, edx
test byte [r9 + r11 + 0x1f2380], 4
je 0x140159847
movzx eax, byte [rcx + 1]
inc rcx
inc edx
test byte [rax + r11 + 0x1f2380], 4
jne 0x140159833
movsxd rax, edx
cmp byte [rax + r10], 0x2e
jne 0x140159881
inc edx
movsxd rcx, edx
add rcx, r10
movzx eax, byte [rcx]
test byte [rax + r11 + 0x1f2380], 4
je 0x14015987b
movzx eax, byte [rcx + 1]
inc rcx
inc edx
test byte [rax + r11 + 0x1f2380], 4
jne 0x140159867
mov dword [rdi], 0x82
movsxd rcx, edx
movzx eax, byte [rcx + r10]
cmp al, 0x65
je 0x140159891
cmp al, 0x45
jne 0x1401598ec
movzx eax, byte [rcx + r10 + 1]
test byte [rax + r11 + 0x1f2380], 4
jne 0x1401598bb
cmp al, 0x2b
je 0x1401598aa
cmp al, 0x2d
jne 0x1401598ec
movzx eax, byte [rcx + r10 + 2]
test byte [rax + r11 + 0x1f2380], 4
je 0x1401598ec
add edx, 2
movsxd rcx, edx
add rcx, r10
movzx eax, byte [rcx]
test byte [rax + r11 + 0x1f2380], 4
je 0x1401598e6
movzx eax, byte [rcx + 1]
inc rcx
inc edx
test byte [rax + r11 + 0x1f2380], 4
jne 0x1401598d2
mov dword [rdi], 0x82
movsxd r9, edx
add r9, r10
movzx eax, byte [r9]
test byte [rax + r11 + 0x1f2380], 0x46
je 0x140159928
mov r8d, 0x94
nop word [rax + rax]
movzx ecx, byte [r9 + 1]
inc r9
inc edx
test byte [rcx + r11 + 0x1f2380], 0x46
mov dword [rdi], r8d
jne 0x140159910
mov eax, edx
mov rbx, qword [rsp + 0x30]
add rsp, 0x20
pop rdi
ret
cmp r9d, 0x5d
je 0x140159954
inc r10
nop
movzx r9d, byte [r10]
test r9d, r9d
je 0x140159954
inc ebx
inc r10
cmp r9d, 0x5d
jne 0x140159940
mov eax, 0x1a
mov r8d, 0x94
cmp r9d, 0x5d
cmove r8d, eax
mov eax, ebx
mov dword [rdx], r8d
mov rbx, qword [rsp + 0x30]
add rsp, 0x20
pop rdi
ret
movzx eax, byte [r10 + 1]
inc r10
mov dword [rdx], 0x85
test byte [rax + r11 + 0x1f2380], 4
je 0x140159bb5
movzx eax, byte [r10 + 1]
inc r10
inc ebx
test byte [rax + r11 + 0x1f2380], 4
jne 0x140159994
mov eax, ebx
mov rbx, qword [rsp + 0x30]
add rsp, 0x20
pop rdi
ret
movzx eax, byte [rcx + 1]
lea r8, [rcx + 1]
mov edx, ebx
test byte [rax + r11 + 0x1f2380], 4
je case.0x1401594b3.13
nop dword [rax + rax]
movzx ecx, byte [r8 + 1]
inc r8
inc edx
test byte [rcx + r11 + 0x1f2380], 4
jne 0x1401599d0
cmp edx, ebx
jle case.0x1401594b3.13
mov dword [rdi], 0x84
mov eax, edx
mov rbx, qword [rsp + 0x30]
add rsp, 0x20
pop rdi
ret
movzx r9d, byte [r10 + 1]
xor edx, edx
mov dword [rdi], 0x85
mov rcx, rbx
mov r8d, 0x94
test r9d, r9d
je 0x140159aa6
nop dword [rax + rax]
movzx eax, r9b
test byte [rax + r11 + 0x1f2380], 0x46
je 0x140159a33
inc edx
jmp 0x140159a4b
cmp r9d, 0x28
je 0x140159a5d
cmp r9d, 0x3a
jne 0x140159a9e
cmp byte [r10 + rcx + 1], r9b
jne 0x140159a9e
inc ebx
inc rcx
movzx r9d, byte [rcx + r10 + 1]
inc rcx
inc ebx
test r9d, r9d
jne 0x140159a20
jmp 0x140159a9e
test edx, edx
jle 0x140159aa0
lea r9, [rcx + r10]
nop word [rax + rax]
movzx ecx, byte [r9 + 1]
inc r9
inc ebx
test ecx, ecx
je 0x140159a92
test byte [rcx + r11 + 0x1f2380], 1
jne 0x140159a92
cmp ecx, 0x29
jne 0x140159a70
inc ebx
jmp 0x140159a9e
cmp ecx, 0x29
jne 0x140159a9b
inc ebx
jmp 0x140159a9e
mov dword [rdi], r8d
test edx, edx
jne 0x140159bb5
mov dword [rdi], r8d
mov eax, ebx
mov rbx, qword [rsp + 0x30]
add rsp, 0x20
pop rdi
ret
cmp byte [rcx + 1], 0x27
jne case.0x1401594b3.34
mov dword [rdx], 0x83
mov edx, 2
add rcx, rdx
movzx eax, byte [rcx]
test byte [rax + r11 + 0x1f2380], 8
je 0x140159af4
nop dword [rax]
movzx eax, byte [rcx + 1]
inc rcx
inc edx
test byte [rax + r11 + 0x1f2380], 8
jne 0x140159ae0
movsxd rax, edx
lea rcx, [rax + r10]
movzx r9d, byte [rcx]
cmp r9b, 0x27
jne 0x140159b19
mov eax, edx
and eax, 0x80000001
jge 0x140159b15
dec eax
or eax, 0xfffffffe
inc eax
test eax, eax
je 0x140159b41
mov r8d, 0x94
mov dword [rdi], r8d
test r9b, r9b
je 0x140159b41
movzx eax, byte [rcx]
nop word [rax + rax]
cmp al, 0x27
je 0x140159b41
movzx eax, byte [rcx + 1]
inc rcx
inc edx
test al, al
jne 0x140159b30
movsxd rcx, edx
cmp byte [rcx + r10], 0
je 0x140159b4d
inc edx
mov eax, edx
mov rbx, qword [rsp + 0x30]
add rsp, 0x20
pop rdi
ret
test byte [r9 + r11 + 0x1f2380], 0x46
jne 0x140159b7e
mov r8d, 0x94
mov eax, 1
mov dword [rdx], r8d
mov rbx, qword [rsp + 0x30]
add rsp, 0x20
pop rdi
ret
movzx eax, byte [rcx + 1]
inc rcx
mov ebx, 1
test byte [rax + r11 + 0x1f2380], 0x46
je 0x140159ba9
movzx eax, byte [rcx + 1]
inc rcx
inc ebx
test byte [rax + r11 + 0x1f2380], 0x46
jne 0x140159b95
mov edx, ebx
mov rcx, r10
call fcn.140159320
mov dword [rdi], eax
mov eax, ebx
mov rbx, qword [rsp + 0x30]
add rsp, 0x20
pop rdi
ret
and eax, 0x70057b9
sub al, 0xc5
sub ecx, 0xffffffff
int3