Function at 0x412ae0
Capabilities:
Parse pe header

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0xb8
xor eax, eax
mov rbx, rcx
mov rbp, rdx
mov ecx, 0x10
lea rdx, [rsp + 0x30]
test rbx, rbx
mov rdi, rdx
rep stosq qword [rdi], rax
je 0x412b17
cmp word [rbx], 0x5a4d
je 0x412b30
xor ebx, ebx
mov rax, rbx
add rsp, 0xb8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
movsxd rcx, dword [rbx + 0x3c]
add rcx, rbx
cmp dword [rcx], 0x4550
jne 0x412b17
test byte [rcx + 0x17], 0x20
je 0x412b17
lea rax, [rcx + 0x88]
mov rcx, qword [rcx + 0x88]
mov rsi, rcx
mov qword [rdx], rcx
mov rcx, qword [rax + 8]
shr rsi, 0x20
test esi, esi
mov qword [rdx + 8], rcx
mov rcx, qword [rax + 0x10]
mov qword [rdx + 0x10], rcx
mov rcx, qword [rax + 0x18]
mov qword [rdx + 0x18], rcx
mov rcx, qword [rax + 0x20]
mov qword [rdx + 0x20], rcx
mov rcx, qword [rax + 0x28]
mov qword [rdx + 0x28], rcx
mov rcx, qword [rax + 0x30]
mov qword [rdx + 0x30], rcx
mov rcx, qword [rax + 0x38]
mov qword [rdx + 0x38], rcx
mov rcx, qword [rax + 0x40]
mov qword [rdx + 0x40], rcx
mov rcx, qword [rax + 0x48]
mov qword [rdx + 0x48], rcx
mov rcx, qword [rax + 0x50]
mov qword [rdx + 0x50], rcx
mov rcx, qword [rax + 0x58]
mov qword [rdx + 0x58], rcx
mov rcx, qword [rax + 0x60]
mov qword [rdx + 0x60], rcx
mov rcx, qword [rax + 0x68]
mov qword [rdx + 0x68], rcx
mov rcx, qword [rax + 0x70]
mov rax, qword [rax + 0x78]
mov qword [rdx + 0x70], rcx
mov qword [rdx + 0x78], rax
je 0x412b17
movsxd rsi, dword [rsp + 0x30]
test esi, esi
je 0x412b17
lea rcx, [0x0048a920]
mov edx, 0x11fd3818
add rsi, rbx
call fcn.00402580
mov edx, 0x27068148
mov rcx, rax
call fcn.00402310
movsxd rdi, dword [rsi + 0x1c]
mov edx, 0x699f4dc8
xor ecx, ecx
mov eax, dword [rsi + 0x18]
add rdi, rbx
mov dword [rsp + 0x28], eax
mov eax, dword [rdi]
mov qword [rsp + 0x20], rdi
mov dword [rsp + 0x2c], eax
movsxd rax, dword [rsi + 0x20]
mov r14d, dword [rax + rbx]
call fcn.00402580
lea rdx, [0x00489bd8]
test rax, rax
je 0x412c50
cmp qword [rax], 0
lea rcx, [rax + 0x10]
cmovne rdx, rcx
cmp rbp, rdx
jne 0x412c80
movsxd rax, dword [rdi - 4]
add rbx, rax
lea rcx, [0x0048a760]
mov edx, 0x16186248
call fcn.00402310
jmp 0x412b19
mov rcx, rbp
call sub.msvcrt.dll_exit_34
test eax, eax
je 0x412c55
mov eax, dword [rsp + 0x28]
test eax, eax
js 0x412d84
xor r12d, r12d
mov qword [rsp + 0x100], rbx
mov qword [rsp + 0x108], rbp
nop dword [rax + rax]
lea rcx, [0x0048a900]
mov edx, 0x373d8458
movsxd rdi, r14d
add rdi, qword [rsp + 0x100]
call fcn.00402310
lea rsi, [0x00489bd8]
test rax, rax
je 0x412ceb
cmp qword [rax], 0
lea rsi, [rax + 0x10]
lea rax, [0x00489bd8]
cmove rsi, rax
test rdi, rdi
je 0x412d60
mov rcx, rdi
call sub.msvcrt.dll_exit_35
test rax, rax
mov r13, rax
je 0x412e52
lea rbp, [rax + rdi]
mov r15, rdi
xor ebx, ebx
jmp 0x412d2e
mov rcx, rsi
add rbx, 1
call sub.msvcrt.dll_exit_35
cmp rbx, rax
je 0x412da0
add r15, 1
cmp rbp, r15
je 0x412e52
movzx eax, byte [r15]
lea ecx, [rax - 0x41]
mov edx, eax
xor edx, 0x20
cmp cl, 0x1a
cmovb eax, edx
movzx edx, byte [rsi + rbx]
lea r8d, [rdx - 0x41]
mov ecx, edx
xor ecx, 0x20
cmp r8b, 0x1a
cmovb edx, ecx
cmp dl, al
je 0x412d10
xor ebx, ebx
jmp 0x412d21
add qword [rsp + 0x20], 4
add r14d, 1
mov rax, qword [rsp + 0x20]
mov eax, dword [rax]
mov dword [rsp + 0x2c], eax
add r12d, 1
cmp dword [rsp + 0x28], r12d
jge 0x412cb0
lea rcx, [0x0048a760]
mov edx, 0x16186248
call fcn.00402310
jmp 0x412b17
add dword [rsp + 0x28], 1
cmp qword [rsp + 0x108], rdi
jne 0x412e30
mov edx, 0x4dd75688
mov rbx, qword [rsp + 0x100]
lea rcx, [0x0048a8e0]
call fcn.00402310
mov edx, 0x11fd3818
lea rcx, [0x0048a8a0]
call fcn.00402310
mov edx, 0x699f4dc8
lea rcx, [0x0048a880]
call fcn.00402310
mov edx, 0xdc771d8
lea rcx, [0x0048a840]
call fcn.00402310
mov edx, 0x8f83708
lea rcx, [0x0048a800]
call fcn.00402310
mov edx, 0x26bea198
lea rcx, [0x0048a7e0]
call fcn.00402310
movsxd rax, dword [rsp + 0x2c]
add rbx, rax
jmp 0x412c5c
mov rcx, qword [rsp + 0x108]
mov rdx, rdi
call sub.msvcrt.dll_exit_34
test eax, eax
je 0x412db3
lea r14d, [r14 + r13 + 1]
jmp 0x412d75
add qword [rsp + 0x20], 4
mov rax, qword [rsp + 0x20]
mov eax, dword [rax]
mov dword [rsp + 0x2c], eax
jmp 0x412da5