Function at 0x140004320
Capabilities:
Parse pe header

Disassembly:
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x40
mov rax, qword [rcx + 0x18]
mov rbp, rdx
movzx edx, byte [rax]
mov rbx, rcx
mov r12, r8
cmp dl, 0x57
je 0x1400043b2
jmp 0x140004723
mov rcx, rbx
call sym.d_source_name
mov ecx, 0x53
test rax, rax
je 0x1400043e0
mov edx, dword [rbx + 0x28]
cmp edx, dword [rbx + 0x2c]
jge 0x1400043e0
movsxd rsi, edx
add edx, 1
shl rsi, 5
add rsi, qword [rbx + 0x20]
mov qword [rsi + 4], 0
mov dword [rbx + 0x28], edx
mov edx, dword [rbx + 0x38]
mov dword [rsi], ecx
mov qword [rsi + 0x10], r12
mov qword [rsi + 0x18], rax
cmp edx, dword [rbx + 0x3c]
jge 0x1400043e0
mov rax, qword [rbx + 0x30]
movsxd rcx, edx
add edx, 1
mov qword [rax + rcx*8], rsi
mov rax, qword [rbx + 0x18]
mov dword [rbx + 0x38], edx
cmp byte [rax], 0x57
jne 0x1400043f8
mov r12, rsi
lea rdx, [rax + 1]
mov qword [rbx + 0x18], rdx
cmp byte [rax + 1], 0x50
jne 0x140004350
add rax, 2
mov rcx, rbx
mov qword [rbx + 0x18], rax
call sym.d_source_name
mov ecx, 0x54
test rax, rax
jne 0x140004362
nop word [rax + rax]
xor edi, edi
mov rax, rdi
add rsp, 0x40
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
ret
movzx edx, byte [rax]
lea ecx, [rdx - 0x30]
cmp cl, 9
jbe 0x140004550
lea ecx, [rdx - 0x61]
cmp cl, 0x19
ja 0x140004498
mov r12d, dword [rbx + 0x4c]
cmp dl, 0x6f
je 0x1400045ad
mov rcx, rbx
call dbg.d_operator_name
mov dword [rbx + 0x4c], r12d
mov rdi, rax
test rax, rax
je case.0x140004610.3
cmp dword [rax], 0x32
jne 0x14000455b
mov rax, qword [rax + 0x10]
mov ecx, dword [rbx + 0x48]
mov edx, dword [rax + 0x10]
mov rax, qword [rax]
lea edx, [rcx + rdx + 7]
mov dword [rbx + 0x48], edx
cmp byte [rax], 0x6c
jne 0x14000455b
cmp byte [rax + 1], 0x69
jne 0x14000455b
cmp byte [rax + 2], 0
jne 0x14000455b
mov rcx, rbx
call sym.d_source_name
mov r8, rdi
mov edx, 0x37
mov rcx, rbx
mov r9, rax
call sym.d_make_comp
mov rdi, rax
jmp 0x14000455b
cmp dl, 0x44
je 0x1400045cb
lea ecx, [rdx - 0x43]
cmp cl, 1
jbe 0x140004785
cmp dl, 0x4c
je 0x1400046f0
cmp dl, 0x55
jne 0x1400043e0
movzx edx, byte [rax + 1]
cmp dl, 0x6c
je 0x14000481b
cmp dl, 0x74
jne 0x1400043e0
lea rdx, [rax + 1]
mov qword [rbx + 0x18], rdx
cmp byte [rax + 1], 0x74
jne case.0x140004610.3
add rax, 2
mov rcx, rbx
mov qword [rbx + 0x18], rax
call sym.d_compact_number
mov edx, eax
test eax, eax
js case.0x140004610.3
mov eax, dword [rbx + 0x28]
cmp eax, dword [rbx + 0x2c]
jge case.0x140004610.3
movsxd rdi, eax
add eax, 1
shl rdi, 5
add rdi, qword [rbx + 0x20]
mov qword [rdi + 4], 0
mov dword [rbx + 0x28], eax
mov eax, dword [rbx + 0x38]
mov dword [rdi], 0x49
mov dword [rdi + 0x10], edx
cmp eax, dword [rbx + 0x3c]
jge case.0x140004610.3
mov rdx, qword [rbx + 0x30]
movsxd rcx, eax
add eax, 1
mov qword [rdx + rcx*8], rdi
mov dword [rbx + 0x38], eax
jmp 0x14000455b
mov rcx, rbx
call sym.d_source_name
mov rdi, rax
test rsi, rsi
je 0x140004576
mov r8, rdi
mov r9, rsi
mov edx, 0x55
mov rcx, rbx
call sym.d_make_comp
mov rdi, rax
mov rax, qword [rbx + 0x18]
cmp byte [rax], 0x42
je 0x140004640
test rbp, rbp
je 0x1400043e2
mov r9, rdi
mov r8, rbp
mov edx, 1
mov rcx, rbx
add rsp, 0x40
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
jmp sym.d_make_comp
cmp byte [rax + 1], 0x6e
jne 0x140004420
add rax, 2
mov dword [rbx + 0x4c], 0
mov qword [rbx + 0x18], rax
jmp 0x140004420
movzx edx, byte [rax + 1]
cmp dl, 0x43
je 0x14000472b
mov rcx, qword [rbx + 0x40]
test rcx, rcx
je 0x1400045f7
mov r8d, dword [rcx]
test r8d, r8d
je 0x140004799
cmp r8d, 0x18
je 0x140004799
sub edx, 0x30
cmp dl, 5
ja case.0x140004610.3
lea r8, [0x140121dfc]
movzx edx, dl
movsxd rdx, dword [r8 + rdx*4]
add rdx, r8
jmp rdx
mov rcx, rbx
call dbg.d_parmlist
mov r12, rax
test rax, rax
jne 0x140004931
nop word cs:[rax + rax]
xor edi, edi
jmp 0x14000455b
mov rsi, qword [rbx + 0x40]
nop dword [rax]
add rax, 1
mov rcx, rbx
mov qword [rbx + 0x18], rax
call sym.d_source_name
mov r8, rdi
mov edx, 0x4d
mov rcx, rbx
mov r9, rax
call sym.d_make_comp
mov rdi, rax
mov rax, qword [rbx + 0x18]
cmp byte [rax], 0x42
je 0x140004648
mov qword [rbx + 0x40], rsi
jmp 0x140004583
mov edx, 5
add rax, 2
mov qword [rbx + 0x18], rax
mov eax, dword [rbx + 0x28]
cmp eax, dword [rbx + 0x2c]
jge case.0x140004610.3
movsxd rdi, eax
add eax, 1
shl rdi, 5
add rdi, qword [rbx + 0x20]
mov qword [rdi + 4], 0
mov dword [rbx + 0x28], eax
test rcx, rcx
je case.0x140004610.3
mov qword [rdi + 4], 0
mov dword [rdi], 8
mov dword [rdi + 0x10], edx
mov qword [rdi + 0x18], rcx
jmp 0x14000455b
mov edx, 4
jmp 0x140004685
mov edx, 3
jmp 0x140004685
mov edx, 2
jmp 0x140004685
mov edx, 1
jmp 0x140004685
add rax, 1
mov rcx, rbx
mov qword [rbx + 0x18], rax
call sym.d_source_name
mov rdi, rax
test rax, rax
je 0x1400043e0
mov rcx, rbx
call dbg.d_discriminator
test eax, eax
jne 0x14000455b
xor edi, edi
jmp 0x1400043e2
mov rsi, r8
jmp 0x1400043fb
add rax, 2
xor r12d, r12d
mov qword [rbx + 0x18], rax
jmp 0x14000475a
mov qword [r11 + 0x18], rax
test r12, r12
je case.0x140004610.3
mov rax, qword [rbx + 0x18]
cmp byte [rax], 0x45
je 0x1400049ac
mov rcx, rbx
call sym.d_source_name
xor r9d, r9d
mov edx, 0x52
mov rcx, rbx
mov r8, rax
mov r11, r12
call sym.d_make_comp
mov r12, rax
test r11, r11
jne 0x140004740
mov rdi, rax
jmp 0x140004744
mov rcx, qword [rbx + 0x40]
test rcx, rcx
je 0x1400047ab
mov edx, dword [rcx]
test edx, edx
je 0x140004799
cmp edx, 0x18
jne 0x1400047ab
mov edx, dword [rcx + 0x18]
add dword [rbx + 0x48], edx
movzx edx, byte [rax]
cmp dl, 0x43
jne 0x1400049b9
movsx edx, byte [rax + 1]
cmp dl, 0x49
je 0x140004a6a
lea r8d, [rdx - 0x31]
cmp r8b, 4
ja case.0x140004610.3
add rax, 2
lea r12d, [rdx - 0x30]
mov qword [rbx + 0x18], rax
mov eax, dword [rbx + 0x28]
cmp eax, dword [rbx + 0x2c]
jge case.0x140004610.3
movsxd rdi, eax
add eax, 1
shl rdi, 5
add rdi, qword [rbx + 0x20]
mov qword [rdi + 4], 0
mov dword [rbx + 0x28], eax
test rcx, rcx
je case.0x140004610.3
mov qword [rdi + 4], 0
mov dword [rdi], 7
mov dword [rdi + 0x10], r12d
mov qword [rdi + 0x18], rcx
jmp 0x14000455b
lea rdx, [rax + 1]
mov qword [rbx + 0x18], rdx
cmp byte [rax + 1], 0x6c
jne case.0x140004610.3
lea rdx, [rax + 2]
mov dword [rsp + 0x2c], 0
lea rdi, [rsp + 0x30]
mov qword [rbx + 0x18], rdx
cmp byte [rax + 2], 0x54
lea r13, [rsp + 0x38]
lea r12, [rsp + 0x2c]
mov qword [rsp + 0x30], 0
jne 0x140004612
movzx eax, byte [rdx + 1]
cmp al, 0x74
je 0x1400049ee
jg 0x14000498f
cmp al, 0x6e
je 0x1400049cb
cmp al, 0x70
jne 0x1400048e6
add rdx, 2
mov rcx, rbx
mov qword [rbx + 0x18], rdx
mov rdx, r12
call sym.d_template_parm
mov rcx, rax
test rax, rax
je 0x140004a5d
mov r8d, 0x5b
mov edx, dword [rbx + 0x28]
cmp edx, dword [rbx + 0x2c]
jge 0x1400048e6
movsxd rax, edx
add edx, 1
shl rax, 5
add rax, qword [rbx + 0x20]
mov qword [rax + 4], 0
mov dword [rbx + 0x28], edx
mov rdx, qword [rbx + 0x18]
mov dword [rax], r8d
mov qword [rax + 0x10], rcx
mov qword [rax + 0x18], 0
mov qword [rdi], rax
cmp byte [rdx], 0x54
lea rdi, [rax + 0x18]
je 0x14000485f
mov r12, qword [rsp + 0x30]
test r12, r12
je 0x140004906
mov r8, r12
xor r9d, r9d
mov edx, 0x57
mov rcx, rbx
call sym.d_make_comp
mov r12, rax
mov eax, dword [rsp + 0x2c]
test eax, eax
jne case.0x140004610.3
mov rcx, rbx
call dbg.d_parmlist
test rax, rax
je case.0x140004610.3
test r12, r12
je 0x140004a9f
mov qword [r12 + 0x18], rax
mov rax, qword [rbx + 0x18]
cmp byte [rax], 0x45
jne case.0x140004610.3
add rax, 1
mov rcx, rbx
mov qword [rbx + 0x18], rax
call sym.d_compact_number
mov edx, eax
test eax, eax
js case.0x140004610.3
mov eax, dword [rbx + 0x28]
cmp eax, dword [rbx + 0x2c]
jge case.0x140004610.3
movsxd rdi, eax
add eax, 1
shl rdi, 5
add rdi, qword [rbx + 0x20]
mov qword [rdi + 4], 0
mov dword [rbx + 0x28], eax
mov dword [rdi], 0x47
mov qword [rdi + 0x10], r12
mov dword [rdi + 0x18], edx
jmp 0x14000455b
cmp al, 0x79
jne 0x1400048e6
add rdx, 2
xor ecx, ecx
mov r8d, 0x58
mov qword [rbx + 0x18], rdx
jmp 0x1400048a2
add rax, 1
mov qword [rbx + 0x18], rax
jmp 0x14000455b
cmp dl, 0x44
jne case.0x140004610.3
movzx edx, byte [rax + 1]
jmp 0x1400045f7
add rdx, 2
mov rcx, rbx
mov qword [rbx + 0x18], rdx
call sym.d_type
mov rcx, rax
test rax, rax
je 0x140004a5d
mov r8d, 0x59
jmp 0x1400048a2
mov qword [rsp + 0x38], 0
add rdx, 2
mov r14, r13
mov qword [rbx + 0x18], rdx
jmp 0x140004a0f
mov qword [r14], rax
lea r14, [rax + 0x18]
mov rdx, r12
mov rcx, rbx
call sym.d_template_parm
test rax, rax
jne 0x140004a08
mov r8, qword [rsp + 0x38]
test r8, r8
je 0x140004a5d
mov rcx, rbx
xor r9d, r9d
mov edx, 0x57
call sym.d_make_comp
mov rcx, rax
test rax, rax
je 0x140004a5d
mov rax, qword [rbx + 0x18]
cmp byte [rax], 0x45
jne 0x140004a5d
add rax, 1
mov r8d, 0x5a
mov qword [rbx + 0x18], rax
jmp 0x1400048a2
mov dword [rsp + 0x2c], 1
jmp 0x1400048e6
lea rdx, [rax + 1]
mov qword [rbx + 0x18], rdx
movsx edx, byte [rax + 2]
lea ecx, [rdx - 0x31]
cmp cl, 4
ja case.0x140004610.3
add rax, 3
mov rcx, rbx
lea r12d, [rdx - 0x30]
mov qword [rbx + 0x18], rax
call sym.d_type
mov rcx, qword [rbx + 0x40]
jmp 0x1400047d2
mov r12, rax
jmp 0x140004931