Function at 0x415390
Capabilities:
Get file size
Read file on windows

Disassembly:
mov rax, rsp
sub rsp, 0x1e8
mov qword [rsp + 0x98], 0xfffffffffffffffe
mov qword [rax + 0x10], rbx
mov qword [rax + 0x18], rbp
mov qword [rax + 0x20], rsi
mov qword [rax - 8], rdi
mov qword [rax - 0x10], r12
mov qword [rax - 0x18], r13
mov qword [rax - 0x20], r14
mov qword [rax - 0x28], r15
mov rax, qword [0x00449028]
mov qword [rsp + 0x1b0], rax
mov r15, rcx
lea rcx, [rsp + 0x60]
call fcn.0041d360
mov ecx, dword [rax]
mov dword [r15 + 0xac], ecx
mov rcx, r15
call fcn.0040f370
mov rcx, r15
call fcn.0040ffa0
mov r8d, 0x104
lea rdx, [rsp + 0xa0]
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
mov rax, qword [r15 + 0x28]
xor edx, edx
lea rcx, [r15 + 0x28]
call qword [rax + 8]
lea rdx, [rsp + 0xa0]
mov qword [rsp + 0x70], rdx
lea rax, [0x00439740]
mov qword [rsp + 0x68], rax
xor r12d, r12d
mov edi, r12d
mov dword [rsp + 0x78], r12d
cmp byte [rsp + 0xa0], dil
je 0x415463
nop
inc edi
movsxd rax, edi
cmp byte [rsp + rax + 0xa0], r12b
jne 0x415450
mov dword [rsp + 0x78], edi
movsxd rbx, dword [r15 + 0x38]
mov eax, dword [r15 + 0x38]
lea edx, [rdi + rax]
mov rax, qword [r15 + 0x28]
lea rcx, [r15 + 0x28]
call qword [rax + 8]
cmp ebx, ebx
jge 0x415496
mov rdx, qword [r15 + 0x30]
add rdx, rbx
movsxd rcx, edi
add rcx, rdx
mov eax, ebx
sub eax, ebx
movsxd r8, eax
call fcn.004230d0
movsxd r8, edi
mov rcx, rbx
add rcx, qword [r15 + 0x30]
lea rdx, [rsp + 0xa0]
call fcn.004230d0
nop
mov r8d, dword [r15 + 0x38]
dec r8d
movsxd rdi, r8d
js 0x4154e6
mov r9, qword [r15 + 0x30]
nop
movzx edx, byte [r9 + rdi]
mov al, 0x2f
lea rcx, [0x004399c0]
nop
cmp al, dl
je 0x4154ec
inc rcx
movzx eax, byte [rcx]
test al, al
jne 0x4154d0
dec r8d
dec rdi
jns 0x4154c0
mov r8d, 0xffffffff
inc r8d
lea rdx, [rsp + 0x40]
lea rcx, [r15 + 0x28]
call fcn.0040f820
mov rdi, rax
mov rax, qword [r15 + 0x48]
xor edx, edx
lea rcx, [r15 + 0x48]
call qword [rax + 8]
movsxd rsi, dword [rdi + 0x10]
mov rbp, qword [rdi + 8]
movsxd rdi, dword [r15 + 0x58]
mov eax, dword [r15 + 0x58]
lea edx, [rsi + rax]
mov rax, qword [r15 + 0x48]
lea rcx, [r15 + 0x48]
call qword [rax + 8]
cmp edi, edi
jge 0x415546
mov rdx, qword [r15 + 0x50]
add rdx, rdi
lea rcx, [rdx + rsi]
mov eax, edi
sub eax, edi
movsxd r8, eax
call fcn.004230d0
mov r8, rsi
mov rcx, rdi
add rcx, qword [r15 + 0x50]
mov rdx, rbp
call fcn.004230d0
nop
lea rax, [0x004395c8]
mov qword [rsp + 0x40], rax
mov rcx, qword [rsp + 0x48]
xor esi, esi
mov qword [rsp + 0x48], rsi
mov dword [rsp + 0x50], esi
mov dword [rsp + 0x58], esi
test rcx, rcx
je 0x415583
call fcn.004230a0
xor eax, eax
mov rcx, 0xffffffffffffffff
lea rdi, [rsp + 0xa0]
repne scasb al, byte [rdi]
not rcx
lea rbx, [rsp + rcx + 0x9f]
lea edx, [rax + 0x2e]
lea rcx, [rsp + 0xa0]
call fcn.00427360
mov rdi, rax
mov edx, 0x2f
lea rcx, [rsp + 0xa0]
call fcn.00427360
test rdi, rdi
je 0x4155d5
test rax, rax
je 0x4155d8
cmp rax, rdi
jbe 0x4155d8
mov rdi, rbx
mov qword [rsp + 0x88], rbx
mov qword [rsp + 0x90], rdi
mov r13d, esi
lea rax, str..cfg
mov qword [rsp + 0x68], rax
lea rax, str..config
mov qword [rsp + 0x70], rax
lea r12, [rsp + 0x88]
nop
nop
mov edi, esi
mov rbp, qword [r12]
lea rbx, [rsp + 0x68]
nop
nop
mov rcx, qword [rbx]
mov rdx, rbp
sub rdx, rcx
nop
nop
movzx eax, byte [rcx]
mov byte [rdx + rcx], al
inc rcx
test al, al
jne 0x415630
mov edx, 4
lea rcx, [rsp + 0xa0]
call fcn.00436bb0
lea r14, [0x00439608]
test eax, eax
jne 0x415694
mov qword [rsp + 0x30], rsi
mov dword [rsp + 0x28], 0x80
mov dword [rsp + 0x20], 3
xor r9d, r9d
mov edx, 0x80000000
lea r8d, [rax + 3]
lea rcx, [rsp + 0xa0]
call qword [sym.imp.KERNEL32.dll_CreateFileA]
mov rsi, rax
cmp rax, 0xffffffffffffffff
jne 0x4156b5
xor esi, esi
inc edi
add rbx, 8
cmp edi, 2
jb 0x415620
inc r13d
add r12, 8
cmp r13d, 2
jae 0x4157cb
jmp 0x415610
xor r12d, r12d
mov qword [rsp + 0x48], r12
mov dword [rsp + 0x50], r12d
lea r13, [0x004395c8]
mov qword [rsp + 0x40], r13
mov dword [rsp + 0x58], r12d
xor edx, edx
lea rcx, [rsp + 0x40]
call qword [0x004395d0]
nop
mov qword [rsp + 0x40], r14
movsxd rdi, dword [rsp + 0x50]
mov edx, edi
lea rcx, [rsp + 0x40]
call qword [0x00439610]
cmp edi, edi
jge 0x415714
mov rcx, qword [rsp + 0x48]
add rcx, rdi
mov eax, edi
sub eax, edi
movsxd r8, eax
mov rdx, rcx
call fcn.004230d0
nop
lea rbp, [0x00439658]
mov qword [rsp + 0x40], rbp
xor edx, edx
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_GetFileSize]
movsxd rdi, eax
movsxd rbx, dword [rsp + 0x50]
lea edx, [rbx + rdi]
lea rcx, [rsp + 0x40]
mov rax, qword [rsp + 0x40]
call qword [rax + 8]
cmp ebx, ebx
jge 0x415763
mov rax, qword [rsp + 0x48]
lea rdx, [rax + rbx]
lea rcx, [rax + rdi]
add rcx, rbx
mov eax, ebx
sub eax, ebx
movsxd r8, eax
call fcn.004230d0
mov rdi, rbx
add rdi, qword [rsp + 0x48]
xor edx, edx
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_GetFileSize]
mov r8d, eax
mov qword [rsp + 0x20], r12
lea r9, [rsp + 0x60]
mov rdx, rdi
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_ReadFile]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_CloseHandle]
lea rdx, [rsp + 0x40]
mov rcx, r15
call fcn.004116c0
nop
mov qword [rsp + 0x40], r13
mov rcx, qword [rsp + 0x48]
xor esi, esi
mov qword [rsp + 0x48], rsi
mov dword [rsp + 0x50], esi
mov dword [rsp + 0x58], esi
test rcx, rcx
je 0x4157d9
call fcn.004230a0
jmp 0x4157d9
lea rbp, [0x00439658]
lea r13, [0x004395c8]
movsxd rdi, dword [r15 + 0x10]
test edi, edi
jle 0x415819
lea edx, [rdi + 2]
mov rax, qword [r15]
mov rcx, r15
call qword [rax + 8]
cmp edi, edi
jge 0x415808
mov rdx, qword [r15 + 8]
add rdx, rdi
lea rcx, [rdx + 2]
mov eax, edi
sub eax, edi
movsxd r8, eax
call fcn.004230d0
mov rcx, rdi
add rcx, qword [r15 + 8]
movzx eax, word [0x0043a5d8]
mov word [rcx], ax
mov eax, dword [r15 + 0x10]
mov dword [r15 + 0x20], eax
mov rcx, r15
call fcn.00413eb0
mov qword [rsp + 0x48], rsi
mov dword [rsp + 0x50], esi
mov qword [rsp + 0x40], r13
mov dword [rsp + 0x58], esi
xor edx, edx
lea rcx, [rsp + 0x40]
call qword [0x004395d0]
nop
mov qword [rsp + 0x40], r14
mov ebx, esi
lea rax, str.disableexternal
nop
nop
nop
inc ebx
inc rax
cmp byte [rax], 0
jne 0x415860
movsxd rsi, dword [rsp + 0x50]
lea edx, [rsi + rbx]
lea rcx, [rsp + 0x40]
call qword [0x00439610]
cmp esi, esi
jge 0x4158a2
mov rax, qword [rsp + 0x48]
lea rdx, [rax + rsi]
movsxd rdi, ebx
add rdi, rax
add rdi, rsi
mov eax, esi
sub eax, esi
movsxd r8, eax
mov rcx, rdi
call fcn.004230d0
movsxd r8, ebx
mov rcx, rsi
add rcx, qword [rsp + 0x48]
lea rdx, str.disableexternal
call fcn.004230d0
nop
mov qword [rsp + 0x40], rbp
mov dword [rsp + 0x20], 1
mov r9d, 1
lea r8, [rsp + 0x40]
lea rdx, [rsp + 0x68]
mov rcx, r15
call fcn.00403520
mov r14, rax
xor r12d, r12d
mov esi, r12d
lea rdx, str.true
nop
inc esi
movsxd rcx, esi
cmp byte [rcx + rdx], r12b
jne 0x4158f0
mov ecx, dword [rax + 0x10]
mov eax, esi
cmp ecx, esi
cmovl eax, ecx
mov ebp, r12d
mov rbx, r12
movsxd r13, eax
test eax, eax
jle 0x41595e
nop
nop
nop
nop
movzx ecx, byte [rbx + rdx]
mov rax, qword [r14 + 8]
movzx r12d, byte [rbx + rax]
cmp r12b, cl
je 0x415950
movsx ecx, cl
call fcn.00424050
mov edi, eax
movsx ecx, r12b
call fcn.00424050
cmp eax, edi
jne 0x41595a
lea rdx, str.true
inc ebp
inc rbx
cmp rbx, r13
jl 0x415920
test ebp, ebp
js 0x415971
cmp ebp, dword [r14 + 0x10]
jge 0x415971
movsxd rcx, ebp
mov rax, qword [r14 + 8]
movzx ecx, byte [rcx + rax]
jmp 0x415973
xor cl, cl
test ebp, ebp
js 0x41598b
cmp ebp, esi
jge 0x41598b
movsxd rax, ebp
lea rdx, str.true
movzx edx, byte [rax + rdx]
jmp 0x41598d
xor dl, dl
movsx ecx, cl
movsx eax, dl
sub ecx, eax
sete dil
lea rsi, [0x004395c8]
mov qword [rsp + 0x68], rsi
mov rcx, qword [rsp + 0x70]
xor ebx, ebx
mov qword [rsp + 0x70], rbx
mov dword [rsp + 0x78], ebx
mov dword [rsp + 0x80], ebx
test rcx, rcx
je 0x4159c6
call fcn.004230a0
lea rax, [0x004395a0]
mov qword [rsp + 0x68], rax
mov qword [rsp + 0x40], rsi
mov rcx, qword [rsp + 0x48]
mov qword [rsp + 0x48], rbx
mov dword [rsp + 0x50], ebx
mov dword [rsp + 0x58], ebx
test rcx, rcx
je 0x4159f3
call fcn.004230a0
test dil, dil
je 0x415a3a
movsxd rdi, dword [r15 + 0x20]
mov eax, dword [r15 + 0x10]
test eax, eax
jle 0x415a36
cmp edi, eax
jl 0x415a15
mov rax, qword [r15]
xor edx, edx
mov rcx, r15
call qword [rax + 8]
jmp 0x415a36
mov rcx, qword [r15 + 8]
sub eax, edi
movsxd r8, eax
lea rdx, [rcx + rdi]
call fcn.004230d0
mov rax, qword [r15]
mov edx, dword [r15 + 0x10]
sub edx, edi
mov rcx, r15
call qword [rax + 8]
mov dword [r15 + 0x20], ebx
mov rcx, qword [rsp + 0x1b0]
call fcn.00437a60
mov rbx, qword [rsp + 0x1f8]
mov rbp, qword [rsp + 0x200]
mov rsi, qword [rsp + 0x208]
mov rdi, qword [rsp + 0x1e0]
mov r12, qword [rsp + 0x1d8]
mov r13, qword [rsp + 0x1d0]
mov r14, qword [rsp + 0x1c8]
mov r15, qword [rsp + 0x1c0]
add rsp, 0x1e8
ret