Function at 0x1401ae560
Capabilities:
Get file version info
Read .ini file

Disassembly:
mov qword [rsp + 0x10], rbx
mov qword [rsp + 0x18], rsi
mov qword [rsp + 0x20], rdi
push rbp
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x37]
sub rsp, 0xb0
mov rax, qword [0x140300040]
xor rax, rsp
mov qword [rbp + 0x27], rax
mov r14, rcx
mov qword [rbp - 1], rcx
xor r13d, r13d
mov dword [rbp - 0x29], r13d
xor eax, eax
mov qword [rcx], rax
call fcn.140019590
mov rcx, rax
test rax, rax
je 0x1401ae9a0
mov rax, qword [rax]
mov rax, qword [rax + 0x18]
call qword [case.0x140038ca6.0]
add rax, 0x18
mov qword [r14], rax
mov edi, 1
mov dword [rbp - 0x29], edi
mov qword [rbp + 0x17], r13
call fcn.140019590
mov rcx, rax
test rax, rax
je 0x1401ae9a0
mov rax, qword [rax]
mov rax, qword [rax + 0x18]
call qword [case.0x140038ca6.0]
lea rbx, [rax + 0x18]
mov qword [rbp + 0x17], rbx
mov qword [rbp + 0xf], r13
lea rdx, str._04d_02d_02d
lea rcx, [rbp + 0xf]
call fcn.1400224e0
nop
mov ecx, edi
sub ecx, dword [rbx - 8]
mov eax, dword [rbx - 0xc]
sub eax, 0x400
or eax, ecx
jge 0x1401ae634
mov edx, 0x400
lea rcx, [rbp + 0x17]
call fcn.140018ea0
mov rbx, qword [rbp + 0x17]
mov r8d, 0x400
mov rdx, rbx
xor ecx, ecx
call qword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
movsxd rdx, dword [rbx - 0xc]
mov rcx, rbx
call fcn.1401fe5d0
test eax, eax
js 0x1401ae995
cmp eax, dword [rbx - 0xc]
jg 0x1401ae995
mov dword [rbx - 0x10], eax
cdqe
mov word [rbx + rax*2], r13w
mov r15d, r13d
mov r12d, r13d
mov qword [rbp + 7], r13
mov dword [rbp + 0x1f], r13d
lea rdx, [rbp + 0x1f]
mov rcx, rbx
call qword [sym.imp.VERSION.dll_GetFileVersionInfoSizeW]
mov esi, eax
test eax, eax
je 0x1401ae6e1
mov dword [rbp + 0x23], r13d
mov ecx, esi
call fcn.140207158
mov rdi, rax
test rax, rax
je 0x1401ae6e1
mov r9, rax
mov r8d, esi
xor edx, edx
mov rcx, rbx
call qword [sym.imp.VERSION.dll_GetFileVersionInfoW]
lea r9, [rbp + 0x23]
lea r8, [rbp + 7]
lea rdx, [0x140267514]
mov rcx, rdi
call qword [sym.imp.VERSION.dll_VerQueryValueW]
test eax, eax
je 0x1401ae6d9
mov rax, qword [rbp + 7]
mov r15d, dword [rax + 8]
mov r12d, dword [rax + 0xc]
mov rcx, rdi
call fcn.140207144
lea rcx, [rbp - 9]
call fcn.140022cf0
mov r13, rax
xor eax, eax
mov qword [rbp - 0x19], rax
mov rax, qword [r13]
mov rcx, qword [rax - 0x18]
test rcx, rcx
je 0x1401ae715
mov rax, qword [rcx]
mov rax, qword [rax + 0x20]
call qword [case.0x140038ca6.0]
mov rcx, rax
test rax, rax
jne 0x1401ae736
call fcn.140019590
mov rcx, rax
mov rax, qword [rax]
mov rax, qword [rax + 0x20]
call qword [case.0x140038ca6.0]
mov rcx, rax
test rax, rax
je 0x1401ae9ab
mov rax, qword [rcx]
mov rax, qword [rax + 0x18]
call qword [case.0x140038ca6.0]
mov r8, rax
lea rbx, [rax + 0x18]
mov qword [rbp - 0x19], rbx
mov dword [rbp - 0x29], 3
lea rax, str.config.ini
mov rsi, 0xffffffffffffffff
mov rdi, rsi
inc rdi
cmp word [rax + rdi*2], 0
jne 0x1401ae766
mov rcx, qword [r13]
mov qword [rbp - 0x11], rcx
mov eax, dword [rcx - 0x10]
mov dword [rbp - 0x21], eax
lea r13d, [rax + rdi]
test r13d, r13d
js 0x1401ae9b6
mov edx, 1
sub edx, dword [r8 + 0x10]
mov eax, dword [r8 + 0xc]
sub eax, r13d
or eax, edx
jge 0x1401ae7b3
mov edx, r13d
lea rcx, [rbp - 0x19]
call fcn.140018ea0
mov rbx, qword [rbp - 0x19]
mov rcx, qword [rbp - 0x11]
movsxd rax, dword [rbp - 0x21]
add rax, rax
mov qword [rbp - 0x21], rax
je 0x1401ae7f8
test rbx, rbx
je 0x1401ae7e4
mov r8, rax
test rcx, rcx
je 0x1401ae7da
mov rdx, rcx
mov rcx, rbx
call fcn.14022e460
jmp 0x1401ae7f4
xor edx, edx
mov rcx, rbx
call fcn.14022eb00
call fcn.1401fed34
mov dword [rax], 0x16
call fcn.1401feb94
mov rax, qword [rbp - 0x21]
movsxd r8, edi
add r8, r8
lea rcx, [rax + rbx]
je 0x1401ae827
test rcx, rcx
jne 0x1401ae81b
call fcn.1401fed34
mov dword [rax], 0x16
call fcn.1401feb94
jmp 0x1401ae827
lea rdx, str.config.ini
call fcn.14022e460
cmp r13d, dword [rbx - 0xc]
jg 0x1401ae9b6
mov dword [rbx - 0x10], r13d
movsxd rax, r13d
xor ecx, ecx
mov word [rbx + rax*2], cx
mov r9, rbx
xor r8d, r8d
lea rdx, str.beta_version
lea rcx, str.SETTING
call qword [sym.imp.KERNEL32.dll_GetPrivateProfileIntW]
mov edi, eax
mov eax, 3
and eax, 0xfffffffd
mov dword [rbp - 0x29], eax
lea rdx, [rbx - 0x18]
mov eax, esi
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x1401ae886
mov rcx, qword [rdx]
mov rax, qword [rcx]
mov rax, qword [rax + 8]
call qword [case.0x140038ca6.0]
nop
mov rdx, qword [rbp - 9]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x1401ae8aa
mov rcx, qword [rdx]
mov rax, qword [rcx]
mov rax, qword [rax + 8]
call qword [case.0x140038ca6.0]
movzx ecx, r12w
shr r12d, 0x10
movzx r9d, r15w
shr r15d, 0x10
mov rax, qword [rbp + 0xf]
mov r8d, r15d
test edi, edi
jne 0x1401ae8f0
mov qword [rsp + 0x38], rax
lea rax, [0x1402a59a0]
mov qword [rsp + 0x30], rax
mov dword [rsp + 0x28], ecx
mov dword [rsp + 0x20], r12d
lea rdx, str._u._u._u._u_s__s_
mov rcx, r14
call fcn.14001c4c0
jmp 0x1401ae91e
mov qword [rsp + 0x40], rax
lea rax, [0x1402a59a0]
mov qword [rsp + 0x38], rax
mov dword [rsp + 0x30], edi
mov dword [rsp + 0x28], ecx
mov dword [rsp + 0x20], r12d
lea rdx, str._u._u._u._ub_d_s__s_
mov rcx, r14
call fcn.14001c4c0
nop
mov rdx, qword [rbp + 0xf]
add rdx, 0xffffffffffffffe8
mov eax, esi
lock xadd dword [rdx + 0x10], eax
sub eax, 1
jg 0x1401ae943
mov rcx, qword [rdx]
mov rax, qword [rcx]
mov rax, qword [rax + 8]
call qword [case.0x140038ca6.0]
nop
mov rdx, qword [rbp + 0x17]
add rdx, 0xffffffffffffffe8
lock xadd dword [rdx + 0x10], esi
sub esi, 1
jg 0x1401ae965
mov rcx, qword [rdx]
mov r8, qword [rcx]
mov rax, qword [r8 + 8]
call qword [case.0x140038ca6.0]
mov rax, r14
mov rcx, qword [rbp + 0x27]
xor rcx, rsp
call fcn.1401f74b0
lea r11, [rsp + 0xb0]
mov rbx, qword [r11 + 0x38]
mov rsi, qword [r11 + 0x40]
mov rdi, qword [r11 + 0x48]
mov rsp, r11
pop r15
pop r14
pop r13
pop r12
pop rbp
ret
mov ecx, 0x80070057
call fcn.140019300
nop
mov ecx, 0x80004005
call fcn.140019300
nop
mov ecx, 0x80004005
call fcn.140019300
int3
mov ecx, 0x80070057
call fcn.140019300
int3