Function at 0x4039a0
Capabilities:
Read file on windows

Disassembly:
push r13
push r12
mov eax, 0x2288
push rbp
push rdi
push rsi
push rbx
call fcn.0046fa50
sub rsp, rax
lea rsi, [rsp + 0xb0]
mov rbp, rcx
mov rbx, rdx
call fcn.0043ed60
xor r9d, r9d
mov qword [rsp + 0x28], 0
mov dword [rsp + 0x20], 0x1a4
mov r8, rbp
mov rdx, rsi
mov rcx, rax
call fcn.00444780
mov edi, eax
xor eax, eax
test edi, edi
js 0x403d7f
mov rcx, rsi
call fcn.004446b0
lea rdx, [0x005162e1]
mov ecx, edi
call sub.msvcrt.dll__fdopen
lea rcx, [rsp + 0x280]
mov edx, 1
mov r9, rax
mov r8d, 0x2000
mov qword [rsp + 0x30], rax
mov qword [rsp + 0x40], 0x2000
mov qword [rsp + 0x38], rcx
mov qword [rsp + 0x50], rcx
mov qword [rsp + 0x48], 0
mov qword [rsp + 0x58], 0
mov qword [rsp + 0x60], 0
mov byte [rsp + 0x68], 0
call sub.msvcrt.dll_fread
mov rdx, qword [rsp + 0x38]
cmp rax, qword [rsp + 0x40]
mov qword [rsp + 0x58], rax
lea rcx, [rdx + rax - 1]
mov qword [rsp + 0x50], rdx
mov qword [rsp + 0x48], rcx
jae 0x403a93
mov byte [rdx + rax], 0
add qword [rsp + 0x48], 1
mov rdx, qword [rsp + 0x50]
mov byte [rsp + 0x68], 1
mov r8, qword [rbx + 0x20]
mov qword [rsp + 0x78], 0
movabs r12, 0x100002600
mov qword [rsp + 0x80], 0
mov qword [rsp + 0x88], 0
mov qword [rsp + 0x70], r8
mov qword [rsp + 0x90], 0
mov qword [rsp + 0x98], 0x100
mov dword [rsp + 0xa0], 0
mov qword [rsp + 0xa8], 0
movzx eax, byte [rdx]
nop dword [rax]
cmp al, 0x20
jbe 0x403b60
cmp al, 0x2f
jne 0x403b6a
lea r12, [rsp + 0x30]
mov r10, qword [rsp + 0x48]
cmp r10, rdx
ja 0x403d90
cmp byte [rsp + 0x68], 0
je 0x404140
cmp rdx, r10
jb 0x4041f5
cmp byte [rsp + 0x68], 0
mov r13d, 0x2f
je 0x40446f
test r13b, r13b
jne 0x4042e5
mov rcx, r12
call fcn.00490730
mov rdx, qword [rsp + 0x50]
movzx eax, byte [rdx]
cmp al, 0x2f
je 0x403b0d
jmp 0x403b6a
bt r12, rax
jb 0x403c20
mov ecx, dword [rsp + 0xa0]
test ecx, ecx
jne 0x40440a
test al, al
je 0x4041ca
lea r12, [rsp + 0x30]
lea rcx, [rsp + 0x70]
mov r8, rbx
mov rdx, r12
call fcn.00486fa0
mov r13d, dword [rsp + 0xa0]
test r13d, r13d
jne 0x404100
mov rdx, qword [rsp + 0x50]
movabs r13, 0x100002600
movzx eax, byte [rdx]
nop dword [rax]
cmp al, 0x20
jbe 0x403cb0
cmp al, 0x2f
jne 0x403cba
mov r9, qword [rsp + 0x48]
cmp r9, rdx
ja 0x404125
cmp byte [rsp + 0x68], 0
je 0x403f60
cmp rdx, r9
jb 0x404459
cmp byte [rsp + 0x68], 0
mov r13d, 0x2f
je 0x4044ca
test r13b, r13b
jne 0x404310
mov rcx, r12
call fcn.00490730
mov rdx, qword [rsp + 0x50]
movzx eax, byte [rdx]
jmp 0x403bc8
cmp qword [rsp + 0x48], rdx
ja 0x403c91
cmp byte [rsp + 0x68], 0
jne 0x403b00
mov r9, qword [rsp + 0x30]
mov r8, qword [rsp + 0x40]
mov rcx, qword [rsp + 0x38]
mov rdx, qword [rsp + 0x58]
add qword [rsp + 0x60], rdx
mov edx, 1
call sub.msvcrt.dll_fread
mov rdx, qword [rsp + 0x38]
cmp rax, qword [rsp + 0x40]
mov qword [rsp + 0x58], rax
lea r13, [rdx + rax - 1]
mov qword [rsp + 0x50], rdx
mov qword [rsp + 0x48], r13
jae 0x403c89
mov byte [rdx + rax], 0
add qword [rsp + 0x48], 1
mov rdx, qword [rsp + 0x50]
mov byte [rsp + 0x68], 1
movzx eax, byte [rdx]
jmp 0x403b00
lea rcx, [rdx + 1]
mov qword [rsp + 0x50], rcx
movzx eax, byte [rdx + 1]
mov rdx, rcx
jmp 0x403b00
bt r13, rax
jb 0x403ed0
mov ecx, dword [rsp + 0xa0]
test ecx, ecx
jne 0x40440a
test al, al
jne 0x40442e
mov r10, qword [rbx + 0x38]
mov r12, qword [rsp + 0x80]
xor edx, edx
mov r13, qword [rsp + 0xa8]
mov dword [rbx + 0x50], 0
lea r9, [r10 - 0x10]
mov qword [rsp + 0x88], r12
mov qword [rbx + 0x58], r13
mov qword [rbx + 0x38], r9
mov r8, qword [r10 - 0x10]
mov qword [rbx], r8
mov r11, qword [r10 - 8]
mov qword [rbx + 8], r11
mov word [r10 - 2], dx
mov rcx, qword [rbx + 0x30]
call fcn.0047b518
mov rcx, qword [rsp + 0x80]
mov qword [rbx + 0x30], 0
mov qword [rbx + 0x38], 0
mov qword [rbx + 0x40], 0
call fcn.0047b518
mov rcx, qword [rsp + 0x78]
call fcn.005111c0
call fcn.0043ed60
xor r9d, r9d
mov rdx, rsi
mov r8d, edi
mov rcx, rax
call fcn.00444a70
mov rcx, rsi
call fcn.004446b0
mov esi, dword [rbx + 0x50]
test esi, esi
jne 0x4041b0
cmp word [rbx + 0xe], 3
sete al
add rsp, 0x2288
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
ret
lea r8, [rdx + 1]
mov qword [rsp + 0x50], r8
movzx r13d, byte [rdx + 1]
cmp r13b, 0x2a
jne 0x4045e6
cmp r10, r8
jbe 0x404530
lea r9, [r8 + 1]
mov qword [rsp + 0x50], r9
movzx r13d, byte [r8 + 1]
mov r8, r9
test r13b, r13b
je 0x4045ae
cmp r13b, 0x2a
jne 0x404525
mov rax, qword [rsp + 0x48]
cmp rax, r8
mov rdx, rax
ja 0x4045a0
cmp byte [rsp + 0x68], 0
jne 0x403dda
mov rcx, qword [rsp + 0x58]
mov r8, qword [rsp + 0x40]
mov edx, 1
add qword [rsp + 0x60], rcx
mov r9, qword [rsp + 0x30]
mov rcx, qword [rsp + 0x38]
call sub.msvcrt.dll_fread
mov r8, qword [rsp + 0x38]
cmp rax, qword [rsp + 0x40]
mov qword [rsp + 0x58], rax
lea rdx, [r8 + rax - 1]
mov qword [rsp + 0x50], r8
mov qword [rsp + 0x48], rdx
jae 0x403e4d
mov byte [r8 + rax], 0
mov r8, qword [rsp + 0x48]
mov byte [rsp + 0x68], 1
lea rdx, [r8 + 1]
mov r8, qword [rsp + 0x50]
mov qword [rsp + 0x48], rdx
movzx r13d, byte [r8]
cmp r13b, 0x2f
jne 0x403dc2
cmp r8, rdx
jb 0x4045d8
cmp byte [rsp + 0x68], 0
jne 0x403b49
mov r9, qword [rsp + 0x58]
mov r8, qword [rsp + 0x40]
mov edx, 1
add qword [rsp + 0x60], r9
mov rcx, qword [rsp + 0x38]
mov r9, qword [rsp + 0x30]
call sub.msvcrt.dll_fread
mov r10, qword [rsp + 0x38]
cmp rax, qword [rsp + 0x40]
mov qword [rsp + 0x58], rax
lea r11, [r10 + rax - 1]
mov qword [rsp + 0x50], r10
mov qword [rsp + 0x48], r11
jae 0x403b49
mov byte [r10 + rax], 0
mov byte [rsp + 0x68], 1
add qword [rsp + 0x48], 1
jmp 0x403b49
cmp qword [rsp + 0x48], rdx
ja 0x403f41
cmp byte [rsp + 0x68], 0
jne 0x403bc0
mov rcx, qword [rsp + 0x58]
mov r9, qword [rsp + 0x30]
mov edx, 1
add qword [rsp + 0x60], rcx
mov r8, qword [rsp + 0x40]
mov rcx, qword [rsp + 0x38]
call sub.msvcrt.dll_fread
mov rdx, qword [rsp + 0x38]
cmp rax, qword [rsp + 0x40]
mov qword [rsp + 0x58], rax
lea r10, [rdx + rax - 1]
mov qword [rsp + 0x50], rdx
mov qword [rsp + 0x48], r10
jae 0x403f39
mov byte [rdx + rax], 0
add qword [rsp + 0x48], 1
mov rdx, qword [rsp + 0x50]
mov byte [rsp + 0x68], 1
movzx eax, byte [rdx]
jmp 0x403bc0
lea r9, [rdx + 1]
mov qword [rsp + 0x50], r9
movzx eax, byte [rdx + 1]
mov rdx, r9
jmp 0x403bc0
mov rcx, qword [rsp + 0x58]
mov r9, qword [rsp + 0x30]
mov edx, 1
add qword [rsp + 0x60], rcx
mov r8, qword [rsp + 0x40]
mov rcx, qword [rsp + 0x38]
call sub.msvcrt.dll_fread
mov r8, qword [rsp + 0x38]
cmp rax, qword [rsp + 0x40]
mov qword [rsp + 0x58], rax
lea r9, [r8 + rax - 1]
mov qword [rsp + 0x50], r8
mov qword [rsp + 0x48], r9
jae 0x403fc0
mov byte [r8 + rax], 0
mov r8, qword [rsp + 0x48]
mov byte [rsp + 0x68], 1
lea r9, [r8 + 1]
mov r8, qword [rsp + 0x50]
mov qword [rsp + 0x48], r9
movzx r10d, byte [r8]
cmp r10b, 0x2a
jne 0x404616
cmp r9, r8
jbe 0x40462f
nop word [rax + rax]
lea r9, [r8 + 1]
mov qword [rsp + 0x50], r9
movzx r10d, byte [r8 + 1]
mov r8, r9
test r10b, r10b
je 0x4045ae
cmp r10b, 0x2a
jne 0x404624
mov rax, qword [rsp + 0x48]
cmp rax, r8
mov r13, rax
ja 0x4046a0
cmp byte [rsp + 0x68], 0
jne 0x404009
mov r8, qword [rsp + 0x40]
mov r9, qword [rsp + 0x30]
mov rcx, qword [rsp + 0x38]
mov rdx, qword [rsp + 0x58]
add qword [rsp + 0x60], rdx
mov edx, 1
call sub.msvcrt.dll_fread
mov r8, qword [rsp + 0x38]
cmp rax, qword [rsp + 0x40]
mov qword [rsp + 0x58], rax
lea r13, [r8 + rax - 1]
mov qword [rsp + 0x50], r8
mov qword [rsp + 0x48], r13
jae 0x40407c
mov byte [r8 + rax], 0
mov rcx, qword [rsp + 0x48]
mov r8, qword [rsp + 0x50]
mov byte [rsp + 0x68], 1
lea r13, [rcx + 1]
mov qword [rsp + 0x48], r13
movzx r10d, byte [r8]
cmp r10b, 0x2f
jne 0x403ff1
cmp r8, r13
jb 0x4046ae
cmp byte [rsp + 0x68], 0
jne 0x403c0c
mov r9, qword [rsp + 0x58]
mov r8, qword [rsp + 0x40]
mov edx, 1
add qword [rsp + 0x60], r9
mov rcx, qword [rsp + 0x38]
mov r9, qword [rsp + 0x30]
call sub.msvcrt.dll_fread
mov r8, qword [rsp + 0x38]
cmp rax, qword [rsp + 0x40]
mov qword [rsp + 0x58], rax
lea r11, [r8 + rax - 1]
mov qword [rsp + 0x50], r8
mov qword [rsp + 0x48], r11
jae 0x403c0c
mov byte [r8 + rax], 0
mov byte [rsp + 0x68], 1
add qword [rsp + 0x48], 1
jmp 0x403c0c
mov rax, qword [rsp + 0xa8]
mov r12, qword [rsp + 0x80]
mov dword [rbx + 0x50], r13d
mov qword [rbx + 0x58], rax
mov qword [rsp + 0x88], r12
jmp 0x403d16
lea r8, [rdx + 1]
mov qword [rsp + 0x50], r8
movzx r10d, byte [rdx + 1]
jmp 0x403fc4
mov r8, qword [rsp + 0x40]
mov r9, qword [rsp + 0x30]
mov rcx, qword [rsp + 0x38]
mov rdx, qword [rsp + 0x58]
add qword [rsp + 0x60], rdx
mov edx, 1
call sub.msvcrt.dll_fread
mov r8, qword [rsp + 0x38]
cmp rax, qword [rsp + 0x40]
mov qword [rsp + 0x58], rax
lea r10, [r8 + rax - 1]
mov qword [rsp + 0x50], r8
mov qword [rsp + 0x48], r10
jae 0x4041a0
mov byte [r8 + rax], 0
mov r9, qword [rsp + 0x48]
mov r8, qword [rsp + 0x50]
mov byte [rsp + 0x68], 1
lea r10, [r9 + 1]
mov qword [rsp + 0x48], r10
movzx r13d, byte [r8]
jmp 0x403d9e
cmp esi, 0x11
ja case.0x4041c7.0
lea rdi, [0x005162f0]
movsxd r11, dword [rdi + rsi*4]
add r11, rdi
jmp r11
sub rdx, qword [rsp + 0x38]
mov dword [rsp + 0xa0], 1
mov r13d, 1
mov rax, rdx
add rax, qword [rsp + 0x60]
mov qword [rsp + 0xa8], rax
jmp 0x404108
lea rax, [rdx + 1]
mov qword [rsp + 0x50], rax
movzx r13d, byte [rdx + 1]
mov rdx, rax
jmp 0x403b40
lea r9, str.The_document_root_must_not_be_followed_by_other_values.
mov r8d, dword [rbx + 0x58]
lea rcx, str._s__d_:__s_n
mov rdx, rbp
call fcn.004846e0
xor eax, eax
add rsp, 0x2288
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
ret
lea r9, str.Terminate_parsing_due_to_Handler_error.
jmp 0x404212
lea r9, str.Miss_exponent_in_number.
jmp 0x404212
lea r9, str.Miss_fraction_part_in_number.
jmp 0x404212
lea r9, str.Number_too_big_to_be_stored_in_double.
jmp 0x404212
lea r9, str.Invalid_encoding_in_string.
jmp 0x404212
lea r9, str.Missing_a_closing_quotation_mark_in_string.
jmp 0x404212
lea r9, str.The_document_is_empty.
jmp 0x404212
lea r9, str.Unspecific_syntax_error.
jmp 0x404212
lea r9, str.Invalid_escape_character_in_string.
jmp 0x404212
lea r9, str.The_surrogate_pair_in_string_is_invalid.
jmp 0x404212
lea r9, str.Incorrect_hex_digit_after_u_escape_in_string.
jmp 0x404212
lea r9, str.Missing_a_comma_or___after_an_array_element.
jmp 0x404212
lea r9, str.Missing_a_comma_or__after_an_object_member.
jmp 0x404212
lea r9, str.Missing_a_colon_after_a_name_of_object_member.
jmp 0x404212
lea r9, str.Missing_a_name_for_object_member.
jmp 0x404212
lea r9, str.Invalid_value.
jmp 0x404212
lea r9, str.Unknown_error.
jmp 0x404212
cmp rdx, qword [rsp + 0x48]
jae 0x404340
add rdx, 1
mov qword [rsp + 0x50], rdx
cmp r13b, 0xa
je 0x403b49
mov rdx, qword [rsp + 0x50]
movzx r13d, byte [rdx]
jmp 0x403b40
cmp qword [rsp + 0x48], rdx
jbe 0x4043a3
add rdx, 1
mov qword [rsp + 0x50], rdx
cmp r13b, 0xa
je 0x403c0c
mov rdx, qword [rsp + 0x50]
movzx r13d, byte [rdx]
jmp 0x403c03
cmp byte [rsp + 0x68], 0
jne 0x4042f5
mov rcx, qword [rsp + 0x58]
mov r8, qword [rsp + 0x40]
mov edx, 1
add qword [rsp + 0x60], rcx
mov r9, qword [rsp + 0x30]
mov rcx, qword [rsp + 0x38]
call sub.msvcrt.dll_fread
mov r8, qword [rsp + 0x38]
cmp rax, qword [rsp + 0x40]
mov qword [rsp + 0x58], rax
lea rdx, [r8 + rax - 1]
mov qword [rsp + 0x50], r8
mov qword [rsp + 0x48], rdx
jae 0x4042f5
mov byte [r8 + rax], 0
mov byte [rsp + 0x68], 1
add qword [rsp + 0x48], 1
jmp 0x4042f5
cmp byte [rsp + 0x68], 0
jne 0x404324
mov r8, qword [rsp + 0x40]
mov rcx, qword [rsp + 0x38]
mov r9, qword [rsp + 0x30]
mov rdx, qword [rsp + 0x58]
add qword [rsp + 0x60], rdx
mov edx, 1
call sub.msvcrt.dll_fread
mov r8, qword [rsp + 0x38]
cmp rax, qword [rsp + 0x40]
mov qword [rsp + 0x58], rax
lea rcx, [r8 + rax - 1]
mov qword [rsp + 0x50], r8
mov qword [rsp + 0x48], rcx
jae 0x404324
mov byte [r8 + rax], 0
mov byte [rsp + 0x68], 1
add qword [rsp + 0x48], 1
jmp 0x404324
mov r12, qword [rsp + 0xa8]
mov r8, qword [rsp + 0x80]
mov dword [rbx + 0x50], ecx
mov qword [rbx + 0x58], r12
mov qword [rsp + 0x88], r8
jmp 0x403d16
sub rdx, qword [rsp + 0x38]
mov dword [rsp + 0xa0], 2
mov r13d, 2
mov rax, rdx
add rax, qword [rsp + 0x60]
mov qword [rsp + 0xa8], rax
jmp 0x404108
lea rax, [rdx + 1]
mov qword [rsp + 0x50], rax
movzx r13d, byte [rdx + 1]
mov rdx, rax
jmp 0x403c03
mov r9, qword [rsp + 0x30]
mov r8, qword [rsp + 0x40]
mov edx, 1
mov rcx, qword [rsp + 0x38]
mov r11, qword [rsp + 0x58]
add qword [rsp + 0x60], r11
call sub.msvcrt.dll_fread
mov rdx, qword [rsp + 0x38]
cmp rax, qword [rsp + 0x40]
mov qword [rsp + 0x58], rax
lea r13, [rdx + rax - 1]
mov qword [rsp + 0x50], rdx
mov qword [rsp + 0x48], r13
jae 0x404304
mov byte [rdx + rax], 0
mov byte [rsp + 0x68], 1
add qword [rsp + 0x48], 1
jmp 0x4042ff
mov r9, qword [rsp + 0x30]
mov r8, qword [rsp + 0x40]
mov edx, 1
mov rcx, qword [rsp + 0x38]
mov r10, qword [rsp + 0x58]
add qword [rsp + 0x60], r10
call sub.msvcrt.dll_fread
mov rdx, qword [rsp + 0x38]
cmp rax, qword [rsp + 0x40]
mov qword [rsp + 0x58], rax
lea r11, [rdx + rax - 1]
mov qword [rsp + 0x50], rdx
mov qword [rsp + 0x48], r11
jae 0x404333
mov byte [rdx + rax], 0
mov byte [rsp + 0x68], 1
add qword [rsp + 0x48], 1
jmp 0x40432e
cmp qword [rsp + 0x48], r8
ja 0x403db1
cmp byte [rsp + 0x68], 0
jne 0x403dc2
mov r8, qword [rsp + 0x40]
mov r9, qword [rsp + 0x30]
mov edx, 1
mov rcx, qword [rsp + 0x38]
mov r10, qword [rsp + 0x58]
add qword [rsp + 0x60], r10
call sub.msvcrt.dll_fread
mov r8, qword [rsp + 0x38]
cmp rax, qword [rsp + 0x40]
mov qword [rsp + 0x58], rax
lea r11, [r8 + rax - 1]
mov qword [rsp + 0x50], r8
mov qword [rsp + 0x48], r11
jae 0x404593
mov byte [r8 + rax], 0
add qword [rsp + 0x48], 1
mov r8, qword [rsp + 0x50]
mov byte [rsp + 0x68], 1
movzx r13d, byte [r8]
jmp 0x403dc2
add r8, 1
mov qword [rsp + 0x50], r8
jmp 0x403e4d
sub r8, qword [rsp + 0x38]
mov dword [rsp + 0xa0], 0x11
mov r12, r8
add r12, qword [rsp + 0x60]
mov qword [rsp + 0xa8], r12
mov ecx, 0x11
jmp 0x404412
add r8, 1
mov qword [rsp + 0x50], r8
jmp 0x403b49
cmp r13b, 0x2f
jne 0x4045f4
mov rdx, r8
jmp 0x403b26
mov r12, r8
sub r12, qword [rsp + 0x38]
mov dword [rsp + 0xa0], 0x11
add r12, qword [rsp + 0x60]
mov qword [rsp + 0xa8], r12
jmp 0x4045ce
cmp r10b, 0x2f
jne 0x4045f4
mov rdx, r8
jmp 0x403be9
cmp qword [rsp + 0x48], r8
ja 0x403fe0
cmp byte [rsp + 0x68], 0
jne 0x403ff1
mov r8, qword [rsp + 0x40]
mov r9, qword [rsp + 0x30]
mov edx, 1
mov rcx, qword [rsp + 0x38]
mov r10, qword [rsp + 0x58]
add qword [rsp + 0x60], r10
call sub.msvcrt.dll_fread
mov r8, qword [rsp + 0x38]
cmp rax, qword [rsp + 0x40]
mov qword [rsp + 0x58], rax
lea r11, [r8 + rax - 1]
mov qword [rsp + 0x50], r8
mov qword [rsp + 0x48], r11
jae 0x404692
mov byte [r8 + rax], 0
add qword [rsp + 0x48], 1
mov r8, qword [rsp + 0x50]
mov byte [rsp + 0x68], 1
movzx r10d, byte [r8]
jmp 0x403ff1
add r8, 1
mov qword [rsp + 0x50], r8
jmp 0x40407c
add r8, 1
mov qword [rsp + 0x50], r8
jmp 0x403c0c