Function at 0x403460
Capabilities:
Link many functions at runtime
Read file on windows

Disassembly:
push rbp
push r15
push r14
push rsi
push rdi
push rbx
sub rsp, 0x78
lea rbp, [rsp + 0x70]
sub rsp, 0x20
call fcn.00401610
add rsp, 0x20
cmp dword [0x00409a10], 0xa
jl 0x40349c
mov eax, dword [0x00409988]
lea ecx, [rax + 1]
imul ecx, eax
and ecx, 1
jne 0x403783
mov eax, 0x10
call fcn.00402a90
sub rsp, rax
mov rax, rsp
mov qword [rbp - 0x30], rax
mov eax, 0x10
call fcn.00402a90
sub rsp, rax
mov rax, rsp
mov qword [rbp - 0x48], rax
mov eax, 0x10
call fcn.00402a90
sub rsp, rax
mov rax, rsp
mov qword [rbp - 0x18], rax
mov eax, 0x10
call fcn.00402a90
sub rsp, rax
mov rax, rsp
mov qword [rbp - 0x20], rax
mov eax, 0x10
call fcn.00402a90
sub rsp, rax
mov rax, rsp
mov qword [rbp - 0x38], rax
mov eax, 0x10
call fcn.00402a90
sub rsp, rax
mov rax, rsp
mov qword [rbp - 0x50], rax
mov eax, 0x10
call fcn.00402a90
sub rsp, rax
mov rax, rsp
mov qword [rbp - 0x58], rax
mov eax, 0x10
call fcn.00402a90
sub rsp, rax
mov rax, rsp
mov qword [rbp - 0x40], rax
mov eax, 0x10
call fcn.00402a90
sub rsp, rax
mov rax, rsp
mov qword [rbp - 0x60], rax
mov eax, 0x10
call fcn.00402a90
sub rsp, rax
mov rax, rsp
mov qword [rbp - 0x68], rax
mov eax, 0x10
call fcn.00402a90
sub rsp, rax
mov rax, rsp
mov qword [rbp - 0x28], rax
mov eax, 0x10
call fcn.00402a90
sub rsp, rax
mov rax, rsp
mov qword [rbp - 0x10], rax
mov eax, 0x10
call fcn.00402a90
sub rsp, rax
mov rax, rsp
mov qword [rbp - 0x70], rax
sub rsp, 0x20
lea rcx, [0x00405010]
call qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
add rsp, 0x20
mov rsi, rax
sub rsp, 0x20
lea rdx, [0x0040501d]
mov rdi, qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, rax
call rdi
add rsp, 0x20
mov rcx, qword [rbp - 0x28]
mov qword [rcx], rax
sub rsp, 0x20
lea rdx, [0x0040502a]
mov rcx, rsi
call rdi
add rsp, 0x20
mov rcx, qword [rbp - 0x68]
mov qword [rcx], rax
sub rsp, 0x20
lea rdx, [0x00405039]
mov rcx, rsi
call rdi
add rsp, 0x20
mov rcx, qword [rbp - 0x60]
mov qword [rcx], rax
sub rsp, 0x20
lea rdx, [0x00405050]
mov rcx, rsi
call rdi
add rsp, 0x20
mov rcx, qword [rbp - 0x40]
mov qword [rcx], rax
sub rsp, 0x20
lea rdx, [0x00405064]
mov rcx, rsi
call rdi
add rsp, 0x20
mov rcx, qword [rbp - 0x58]
mov qword [rcx], rax
sub rsp, 0x20
lea rdx, [0x00405070]
mov rcx, rsi
call rdi
add rsp, 0x20
mov rcx, qword [rbp - 0x50]
mov qword [rcx], rax
mov rax, qword [rbp - 0x10]
mov rcx, qword [rbp - 0x38]
mov qword [rcx], rax
mov rax, qword [rbp - 0x38]
mov rax, qword [rax]
mov rcx, qword [rbp - 0x10]
sub rsp, 0x20
lea rdx, [0x0040507d]
lea r8, [0x00405086]
call qword [sym.imp.msvcrt.dll_fopen_s]
add rsp, 0x20
mov rax, qword [rbp - 0x10]
mov rcx, qword [rax]
sub rsp, 0x20
xor edx, edx
mov r8d, 2
call sub.msvcrt.dll_fseek
add rsp, 0x20
mov rax, qword [rbp - 0x10]
mov rcx, qword [rax]
sub rsp, 0x20
call sub.msvcrt.dll_ftell
add rsp, 0x20
mov esi, eax
mov rax, qword [rbp - 0x10]
mov rcx, qword [rax]
sub rsp, 0x20
xor edx, edx
xor r8d, r8d
call sub.msvcrt.dll_fseek
add rsp, 0x20
movsxd rax, esi
mov rcx, qword [rbp - 0x20]
mov qword [rcx], rax
mov rax, qword [rbp - 0x28]
mov rax, qword [rax]
mov rcx, qword [rbp - 0x20]
mov rdx, qword [rcx]
sub rsp, 0x20
xor ecx, ecx
mov r8d, 0x1000
mov r9d, 4
call rax
add rsp, 0x20
mov rcx, qword [rbp - 0x18]
mov qword [rcx], rax
mov rax, qword [rbp - 0x10]
mov r9, qword [rax]
mov rax, qword [rbp - 0x20]
mov r8, qword [rax]
mov rax, qword [rbp - 0x18]
mov rcx, qword [rax]
sub rsp, 0x20
mov edx, 1
call sub.msvcrt.dll_fread
add rsp, 0x20
mov rcx, qword [rbp - 0x48]
mov qword [rcx], rax
mov eax, 0x10
call fcn.00402a90
sub rsp, rax
mov rax, rsp
mov qword [rbp - 8], rax
mov rax, qword [rbp - 8]
mov dword [rax], 0xde24ed
cmp dword [0x004099f0], 0xa
jl 0x403a4d
mov eax, dword [0x004099c8]
lea ecx, [rax + 1]
imul ecx, eax
and ecx, 1
je 0x403a4d
mov eax, 0x10
call fcn.00402a90
sub rsp, rax
mov rax, rsp
mov qword [rbp - 0x30], rax
mov eax, 0x10
call fcn.00402a90
sub rsp, rax
mov rax, rsp
mov qword [rbp - 0x48], rax
mov eax, 0x10
call fcn.00402a90
sub rsp, rax
mov rax, rsp
mov qword [rbp - 0x18], rax
mov eax, 0x10
call fcn.00402a90
sub rsp, rax
mov rax, rsp
mov qword [rbp - 0x20], rax
mov eax, 0x10
call fcn.00402a90
sub rsp, rax
mov rax, rsp
mov qword [rbp - 0x38], rax
mov eax, 0x10
call fcn.00402a90
sub rsp, rax
mov rax, rsp
mov qword [rbp - 0x50], rax
mov eax, 0x10
call fcn.00402a90
sub rsp, rax
mov rax, rsp
mov qword [rbp - 0x58], rax
mov eax, 0x10
call fcn.00402a90
sub rsp, rax
mov rax, rsp
mov qword [rbp - 0x40], rax
mov eax, 0x10
call fcn.00402a90
sub rsp, rax
mov rax, rsp
mov qword [rbp - 0x60], rax
mov eax, 0x10
call fcn.00402a90
sub rsp, rax
mov rax, rsp
mov qword [rbp - 0x68], rax
mov eax, 0x10
call fcn.00402a90
sub rsp, rax
mov rax, rsp
mov qword [rbp - 0x28], rax
mov eax, 0x10
call fcn.00402a90
sub rsp, rax
mov rax, rsp
mov qword [rbp - 0x10], rax
mov eax, 0x10
call fcn.00402a90
sub rsp, rax
mov rax, rsp
mov qword [rbp - 0x70], rax
sub rsp, 0x20
lea rcx, [0x00405010]
call qword [sym.imp.KERNEL32.dll_GetModuleHandleA]
add rsp, 0x20
mov rsi, rax
sub rsp, 0x20
lea rdx, [0x0040501d]
mov rdi, qword [sym.imp.KERNEL32.dll_GetProcAddress]
mov rcx, rax
call rdi
add rsp, 0x20
mov rcx, qword [rbp - 0x28]
mov qword [rcx], rax
sub rsp, 0x20
lea rdx, [0x0040502a]
mov rcx, rsi
call rdi
add rsp, 0x20
mov rcx, qword [rbp - 0x68]
mov qword [rcx], rax
sub rsp, 0x20
lea rdx, [0x00405039]
mov rcx, rsi
call rdi
add rsp, 0x20
mov rcx, qword [rbp - 0x60]
mov qword [rcx], rax
sub rsp, 0x20
lea rdx, [0x00405050]
mov rcx, rsi
call rdi
add rsp, 0x20
mov rcx, qword [rbp - 0x40]
mov qword [rcx], rax
sub rsp, 0x20
lea rdx, [0x00405064]
mov rcx, rsi
call rdi
add rsp, 0x20
mov rcx, qword [rbp - 0x58]
mov qword [rcx], rax
sub rsp, 0x20
lea rdx, [0x00405070]
mov rcx, rsi
call rdi
add rsp, 0x20
mov rcx, qword [rbp - 0x50]
mov qword [rcx], rax
mov rax, qword [rbp - 0x10]
mov rcx, qword [rbp - 0x38]
mov qword [rcx], rax
mov rax, qword [rbp - 0x38]
mov rax, qword [rax]
mov rcx, qword [rbp - 0x10]
sub rsp, 0x20
lea rdx, [0x0040507d]
lea r8, [0x00405086]
call qword [sym.imp.msvcrt.dll_fopen_s]
add rsp, 0x20
mov rax, qword [rbp - 0x10]
mov rcx, qword [rax]
sub rsp, 0x20
xor edx, edx
mov r8d, 2
call sub.msvcrt.dll_fseek
add rsp, 0x20
mov rax, qword [rbp - 0x10]
mov rcx, qword [rax]
sub rsp, 0x20
call sub.msvcrt.dll_ftell
add rsp, 0x20
mov esi, eax
mov rax, qword [rbp - 0x10]
mov rcx, qword [rax]
sub rsp, 0x20
xor edx, edx
xor r8d, r8d
call sub.msvcrt.dll_fseek
add rsp, 0x20
movsxd rax, esi
mov rcx, qword [rbp - 0x20]
mov qword [rcx], rax
mov rax, qword [rbp - 0x28]
mov rax, qword [rax]
mov rcx, qword [rbp - 0x20]
mov rdx, qword [rcx]
sub rsp, 0x20
xor ecx, ecx
mov r8d, 0x1000
mov r9d, 4
call rax
add rsp, 0x20
mov rcx, qword [rbp - 0x18]
mov qword [rcx], rax
mov rax, qword [rbp - 0x10]
mov r9, qword [rax]
mov rax, qword [rbp - 0x20]
mov r8, qword [rax]
mov rax, qword [rbp - 0x18]
mov rcx, qword [rax]
sub rsp, 0x20
mov edx, 1
call sub.msvcrt.dll_fread
add rsp, 0x20
mov rcx, qword [rbp - 0x48]
mov qword [rcx], rax
mov eax, 0x10
call fcn.00402a90
sub rsp, rax
mov rax, rsp
mov qword [rbp - 8], rax
mov rax, qword [rbp - 8]
mov dword [rax], 0xde24ed
jmp 0x40349c
mov edi, 0x4d340dc3
mov r14, qword [sym.imp.KERNEL32.dll_CloseHandle]
mov r15d, 0x7d30c524
nop
cmp dword [0x004099f8], 0xa
jl 0x403a7a
mov eax, dword [0x004099d0]
lea ecx, [rax - 1]
imul ecx, eax
and ecx, 1
jne 0x403a60
cmp dword [0x004099c4], 0xa
jl 0x403aa0
mov eax, dword [0x00409a1c]
mov ecx, 1
sub ecx, eax
imul ecx, eax
and ecx, 1
jne 0x403ac8
nop dword [rax + rax]
mov rax, qword [rbp - 8]
cmp dword [rax], 0x7bd18a7f
setb byte [rbp + 4]
cmp dword [0x004099c0], 0xa
jl 0x403ae0
mov eax, dword [0x00409980]
lea ecx, [rax + 1]
imul ecx, eax
and ecx, 1
je 0x403ae0
mov rax, qword [rbp - 8]
cmp dword [rax], 0x7bd18a7f
setb byte [rbp + 4]
jmp 0x403aa0
cmp byte [rbp + 4], 0
je 0x404060
cmp dword [0x00409a04], 0xa
jl 0x404000
mov eax, dword [0x004099d8]
lea ecx, [rax + 1]
imul ecx, eax
and ecx, 1
jne 0x404050
jmp 0x404000
cmp dword [0x004099bc], 0xa
jl 0x403b40
mov eax, dword [0x0040999c]
lea ecx, [rax - 1]
imul ecx, eax
and ecx, 1
jne 0x403b79
nop word [rax + rax]
mov rax, qword [rbp - 0x20]
mov rax, qword [rax]
mov rcx, qword [rbp - 0x48]
mov rcx, qword [rcx]
cmp rcx, rax
mov eax, 0x5b5feff
cmove eax, edi
mov rcx, qword [rbp - 8]
mov dword [rcx], eax
cmp dword [0x00409974], 0xa
jl 0x403ba0
mov eax, dword [0x00409a20]
lea ecx, [rax + 1]
imul ecx, eax
and ecx, 1
je 0x403ba0
mov rax, qword [rbp - 0x20]
mov rax, qword [rax]
mov rcx, qword [rbp - 0x48]
mov rcx, qword [rcx]
cmp rcx, rax
mov eax, 0x5b5feff
cmove eax, edi
mov rcx, qword [rbp - 8]
mov dword [rcx], eax
jmp 0x403b40
cmp dword [0x00409a08], 0xa
mov eax, dword [0x00409a00]
setl cl
mov edx, 1
sub edx, eax
imul edx, eax
test dl, 1
sete al
or al, cl
nop word cs:[rax + rax]
nop dword [rax]
test al, al
je 0x403bd0
jmp 0x403a60
cmp dword [0x00409a30], 0xa
jl 0x403c00
mov eax, dword [0x004099e4]
lea ecx, [rax + 1]
imul ecx, eax
and ecx, 1
jne 0x403cc3
nop word [rax + rax]
mov rax, qword [rbp - 0x10]
mov rcx, qword [rax]
sub rsp, 0x20
call sub.msvcrt.dll_fclose
add rsp, 0x20
mov rax, qword [rbp - 0x50]
mov rax, qword [rax]
sub rsp, 0x20
xor ecx, ecx
mov edx, 1
xor r8d, r8d
xor r9d, r9d
call rax
add rsp, 0x20
mov rsi, rax
mov rax, qword [rbp - 0x40]
mov rax, qword [rax]
sub rsp, 0x20
mov rcx, rsi
xor edx, edx
call rax
mov rcx, rsi
call r14
add rsp, 0x20
mov rax, qword [rbp - 0x70]
mov rcx, qword [rbp - 0x30]
mov qword [rcx], rax
mov rax, qword [rbp - 0x30]
mov rax, qword [rax]
mov rax, qword [rbp - 0x68]
mov rax, qword [rax]
mov rcx, qword [rbp - 0x20]
mov rdx, qword [rcx]
mov rcx, qword [rbp - 0x18]
mov rcx, qword [rcx]
mov r9, qword [rbp - 0x70]
sub rsp, 0x20
mov r8d, 0x20
call rax
add rsp, 0x20
test eax, eax
mov eax, 0x66db128b
cmove eax, r15d
mov rcx, qword [rbp - 8]
mov dword [rcx], eax
cmp dword [0x004099a0], 0xa
jl 0x403d65
mov eax, dword [0x00409994]
mov ecx, 0xa69a8743
sub ecx, eax
imul ecx, eax
and ecx, 1
je 0x403d65
mov rax, qword [rbp - 0x10]
mov rcx, qword [rax]
sub rsp, 0x20
call sub.msvcrt.dll_fclose
add rsp, 0x20
mov rax, qword [rbp - 0x50]
mov rax, qword [rax]
sub rsp, 0x20
xor ecx, ecx
mov edx, 1
xor r8d, r8d
xor r9d, r9d
call rax
add rsp, 0x20
mov rsi, rax
mov rax, qword [rbp - 0x40]
mov rax, qword [rax]
sub rsp, 0x20
mov rcx, rsi
xor edx, edx
call rax
mov rcx, rsi
call r14
add rsp, 0x20
mov rax, qword [rbp - 0x70]
mov rcx, qword [rbp - 0x30]
mov qword [rcx], rax
mov rax, qword [rbp - 0x30]
mov rax, qword [rax]
mov rax, qword [rbp - 0x68]
mov rax, qword [rax]
mov rcx, qword [rbp - 0x20]
mov rdx, qword [rcx]
mov rcx, qword [rbp - 0x18]
mov rcx, qword [rcx]
mov r9, qword [rbp - 0x70]
sub rsp, 0x20
mov r8d, 0x20
call rax
add rsp, 0x20
test eax, eax
mov eax, 0x66db128b
cmove eax, r15d
mov rcx, qword [rbp - 8]
mov dword [rcx], eax
jmp 0x403c00
mov eax, dword [0x00409984]
cmp dword [0x004099d4], 0xa
setl cl
lea edx, [rax + 1]
imul edx, eax
test dl, 1
sete al
or al, cl
nop word cs:[rax + rax]
nop dword [rax]
test al, al
je 0x403d90
jmp 0x403a60
cmp dword [0x00409990], 0xa
jl 0x403dc0
mov eax, dword [0x00409a3c]
lea ecx, [rax + 1]
imul ecx, eax
and ecx, 1
jne 0x403e5b
nop word [rax + rax]
mov rax, qword [rbp - 0x18]
mov r8, qword [rax]
mov rax, qword [rbp - 0x60]
mov rax, qword [rax]
sub rsp, 0x30
mov qword [rsp + 0x28], 0
mov dword [rsp + 0x20], 0
xor ecx, ecx
xor edx, edx
xor r9d, r9d
call rax
add rsp, 0x30
mov rsi, rax
mov rax, qword [rbp - 0x40]
mov rax, qword [rax]
sub rsp, 0x20
mov rcx, rsi
mov edx, 0xffffffff
call rax
add rsp, 0x20
mov rax, qword [rbp - 0x58]
mov rax, qword [rax]
sub rsp, 0x20
mov rcx, rsi
call rax
add rsp, 0x20
mov rax, qword [rbp - 8]
mov dword [rax], 0x7d30c524
mov edx, dword [0x00409a38]
mov ecx, dword [0x004099f4]
cmp ecx, 0xa
setl bl
cmp ecx, 9
setg cl
lea esi, [rdx - 1]
imul esi, edx
test sil, 1
sete dl
mov eax, ebx
xor al, dl
jne 0x403eca
or dl, cl
xor bl, dl
je 0x403eca
mov rax, qword [rbp - 0x18]
mov r8, qword [rax]
mov rax, qword [rbp - 0x60]
mov rax, qword [rax]
sub rsp, 0x30
mov qword [rsp + 0x28], 0
mov dword [rsp + 0x20], 0
xor ecx, ecx
xor edx, edx
xor r9d, r9d
call rax
add rsp, 0x30
mov rsi, rax
mov rax, qword [rbp - 0x40]
mov rax, qword [rax]
sub rsp, 0x20
mov rcx, rsi
mov edx, 0xffffffff
call rax
add rsp, 0x20
mov rax, qword [rbp - 0x58]
mov rax, qword [rax]
sub rsp, 0x20
mov rcx, rsi
call rax
add rsp, 0x20
mov rax, qword [rbp - 8]
mov dword [rax], 0x7d30c524
jmp 0x403dc0
mov eax, dword [0x00409a28]
cmp dword [0x00409a44], 0xa
setl cl
lea edx, [rax - 1]
imul edx, eax
test dl, 1
sete al
or al, cl
nop dword [rax + rax]
test al, al
je 0x403ef0
jmp 0x403a60
cmp dword [0x004099a4], 0xa
jl 0x403f20
mov eax, dword [0x004099dc]
lea ecx, [rax + 1]
imul ecx, eax
and ecx, 1
jne 0x403f48
nop word [rax + rax]
mov rax, qword [rbp - 8]
cmp dword [rax], 0x2be7f12
setb byte [rbp + 7]
cmp dword [0x00409a40], 0xa
jl 0x403f60
mov eax, dword [0x00409a4c]
lea ecx, [rax + 1]
imul ecx, eax
and ecx, 1
je 0x403f60
mov rax, qword [rbp - 8]
cmp dword [rax], 0x2be7f12
setb byte [rbp + 7]
jmp 0x403f20
cmp byte [rbp + 7], 0
jne 0x403b20
jmp 0x404080
cmp dword [0x004099b8], 0xa
jl 0x403fa0
mov eax, dword [0x004099ac]
lea ecx, [rax + rax]
add ecx, 0xe47b9145
add ecx, eax
add ecx, 0xe47b9146
imul ecx, eax
and ecx, 1
jne 0x403ff0
nop dword [rax + rax]
mov rax, qword [rbp - 8]
cmp dword [rax], 0x562cd104
setb byte [rbp + 6]
mov eax, dword [0x004099fc]
cmp dword [0x004099cc], 9
setg cl
lea edx, [rax + 1]
imul edx, eax
and edx, 1
sete al
mov ebx, ecx
and bl, al
or dl, cl
xor dl, bl
or cl, al
cmp cl, dl
je 0x403ff0
cmp byte [rbp + 6], 0
jne 0x403bd9
jmp 0x403d99
mov rax, qword [rbp - 8]
cmp dword [rax], 0x562cd104
setb byte [rbp + 6]
jmp 0x403fa0
mov rax, qword [rbp - 8]
cmp dword [rax], 0x4aa7a432
setb byte [rbp + 5]
mov eax, dword [0x0040998c]
cmp dword [0x004099b4], 0xa
setl bl
mov edx, eax
not edx
imul edx, eax
and edx, 1
sete al
or dl, bl
mov ecx, ebx
xor cl, al
xor al, dl
xor dl, bl
xor cl, 1
or cl, al
cmp dl, cl
je 0x404050
cmp byte [rbp + 5], 0
jne 0x403f00
jmp 0x403f70
mov rax, qword [rbp - 8]
cmp dword [rax], 0x4aa7a432
setb byte [rbp + 5]
jmp 0x404000
cmp dword [0x0040997c], 0xa
jl 0x4040c0
mov eax, dword [0x004099b0]
lea ecx, [rax + 1]
imul ecx, eax
and ecx, 1
jne 0x404112
jmp 0x4040c0
mov rax, qword [rbp - 0x10]
mov rcx, qword [rax]
sub rsp, 0x20
call sub.msvcrt.dll_fclose
add rsp, 0x20
mov rax, qword [rbp - 0x28]
mov rax, qword [rax]
mov rcx, qword [rbp - 0x18]
mov rcx, qword [rcx]
sub rsp, 0x20
xor edx, edx
mov r8d, 0x8000
mov r9d, 1
call rax
mov ecx, 1
call sub.msvcrt.dll_exit
mov rax, qword [rbp - 0x28]
mov rax, qword [rax]
mov rcx, qword [rbp - 0x18]
mov rcx, qword [rcx]
sub rsp, 0x20
mov esi, 1
xor edx, edx
mov r8d, 0x8000
mov r9d, 1
call rax
add rsp, 0x20
mov rax, qword [rbp - 0x30]
mov rax, qword [rax]
mov rax, qword [rbp - 0x38]
mov rax, qword [rax]
cmp dword [0x004099e8], 0xa
jl 0x40414b
mov eax, dword [0x00409970]
sub esi, eax
imul esi, eax
and esi, 1
je 0x40414b
mov rax, qword [rbp - 0x28]
mov rax, qword [rax]
mov rcx, qword [rbp - 0x18]
mov rcx, qword [rcx]
sub rsp, 0x20
xor edx, edx
mov r8d, 0x8000
mov r9d, 1
call rax
add rsp, 0x20
mov rax, qword [rbp - 0x30]
mov rax, qword [rax]
mov rax, qword [rbp - 0x38]
mov rax, qword [rax]
jmp 0x4040c0
xor eax, eax
lea rsp, [rbp + 8]
pop rbx
pop rdi
pop rsi
pop r14
pop r15
pop rbp
ret