Function at 0x14003c972
Capabilities:
Get memory capacity
Read .ini file

Disassembly:
push r14
push r15
push rbp
sub rsp, 0x1e0
mov rbp, r9
movsxd r10, dword [rcx + 0x160]
mov r14, r8
mov r11d, 1
cmp r10, 1
jle 0x14003c692
mov r9, qword [rcx + 0x168]
mov r8, qword [r9 + r11*8]
cmp byte [r8], 0x2d
je 0x14003c972
inc r11
cmp r11, r10
jl 0x14003c67c
mov rax, rsp
lea r10, [rcx + 0x178]
add rcx, 0x188
lea r15, [rsp + 0x30]
xor r8d, r8d
mov r9, r15
mov qword [rax + 0x28], rcx
mov rcx, r10
mov dword [rax + 0x20], 0x104
call qword [sym.imp.KERNEL32.dll_GetPrivateProfileStringA]
test eax, eax
lea rcx, [rsp + 0x170]
mov dword [rcx], 0x40
cmovne rbp, r15
call qword [sym.imp.KERNEL32.dll_GlobalMemoryStatusEx]
test eax, eax
je 0x14003c703
mov rdx, qword [rsp + 0x180]
cmp rdx, qword [rsp + 0x1a0]
mov r10, qword [rsp + 0x1a0]
cmovb r10, qword [rsp + 0x180]
jmp 0x14003c73d
mov dword [rsp + 0x138], 0x38
lea rcx, [rsp + 0x138]
call qword [sym.imp.KERNEL32.dll_GlobalMemoryStatus]
mov rdx, qword [rsp + 0x148]
cmp rdx, qword [rsp + 0x168]
mov r10, qword [rsp + 0x168]
cmovb r10, qword [rsp + 0x148]
xor r8d, r8d
cmp byte [rbp], 0
je 0x14003c8eb
xor edx, edx
xor r9d, r9d
movsx r11d, byte [rbp]
xor ecx, ecx
test r11d, r11d
je 0x14003c945
mov qword [rsp + 0x1d0], rbx
mov qword [rsp + 0x1b8], rsi
mov qword [rsp + 0x1c0], rdi
mov qword [rsp + 0x1c8], r12
mov qword [rsp + 0x1b0], r13
lea ebx, [r11 - 0x30]
cmp ebx, 9
jbe 0x14003c7ad
inc rdx
mov ebx, 1
cmp r11d, 0x2d
cmove r9d, ebx
dec rcx
movsx r11d, byte [rdx + rbp]
test r11d, r11d
jne 0x14003c787
test r11d, r11d
je 0x14003c8c3
lea rdi, [rdx + 1]
movsx r11d, byte [rdi + rbp]
lea rsi, [rcx - 1]
lea ebx, [r11 - 0x30]
cmp ebx, 9
ja 0x14003c7e0
inc rdi
dec rsi
movsx r11d, byte [rdi + rbp]
lea ebx, [r11 - 0x30]
cmp ebx, 9
jbe 0x14003c7cc
xor ebx, ebx
cmp rdx, rdi
jae 0x14003c84a
add rcx, rdi
mov r12d, 1
mov r15, rcx
xor r13d, r13d
shr r15, 1
test r15, r15
jbe 0x14003c82d
lea r12, [rbp + rdx]
lea rax, [rbx + rbx*4]
movsx rbx, byte [r12 + r13*2]
lea rbx, [rbx + rax*2 - 0x30]
lea rax, [rbx + rbx*4]
movsx rbx, byte [r12 + r13*2 + 1]
inc r13
lea rbx, [rbx + rax*2 - 0x30]
cmp r13, r15
jb 0x14003c803
lea r12, [r13 + r13 + 1]
lea r13, [r12 - 1]
cmp r13, rcx
jae 0x14003c84a
lea r12, [rbp + r12 - 1]
movsx rdx, byte [r12 + rdx]
lea rcx, [rbx + rbx*4]
lea rbx, [rdx + rcx*2 - 0x30]
cmp r11d, 0x25
je 0x14003c90f
cmp r11d, 0x70
je 0x14003c90f
cmp r11d, 0x4b
je 0x14003c909
cmp r11d, 0x6b
je 0x14003c909
cmp r11d, 0x4d
je 0x14003c890
cmp r11d, 0x6d
je 0x14003c890
cmp r11d, 0x47
je 0x14003c88a
cmp r11d, 0x67
jne 0x14003c894
shl rbx, 0x1e
jmp 0x14003c894
shl rbx, 0x14
mov rdx, rbx
neg rdx
test r9d, r9d
cmovne rbx, rdx
add r8, rbx
test r11d, r11d
je 0x14003c8c3
lea rdx, [rdi + 1]
movsx r11d, byte [rdx + rbp]
test r11d, r11d
je 0x14003c8c3
xor r9d, r9d
lea rcx, [rsi - 1]
jmp 0x14003c787
mov rbx, qword [rsp + 0x1d0]
mov rsi, qword [rsp + 0x1b8]
mov rdi, qword [rsp + 0x1c0]
mov r12, qword [rsp + 0x1c8]
mov r13, qword [rsp + 0x1b0]
cmp r8, r14
cmovg r14, r8
cmp r14, r10
cmovl r10, r14
mov rax, r10
add rsp, 0x1e0
pop rbp
pop r15
pop r14
ret
shl rbx, 0xa
jmp 0x14003c894
mov ecx, 0x64
cmp rbx, 0x64
movabs r12, 0x47ae147ae147ae15
cmova rbx, rcx
imul rbx, r10
mov rax, rbx
mul r12
sub rbx, rdx
shr rbx, 1
add rdx, rbx
mov rbx, rdx
shr rbx, 6
jmp 0x14003c894
mov qword [rsp + 0x1d0], rbx
mov qword [rsp + 0x1b8], rsi
mov qword [rsp + 0x1c0], rdi
mov qword [rsp + 0x1c8], r12
mov qword [rsp + 0x1b0], r13
jmp 0x14003c7ad
xor eax, eax
mov r15b, byte [rax + rdx]
inc rax
test r15b, r15b
je 0x14003c98b
cmp r15b, byte [rax + r8]
je 0x14003c974
jmp 0x14003c68a
cmp byte [rax + r8], 0x3d
jne 0x14003c99c
inc rax
cmp byte [rax + r8], 0x3d
je 0x14003c992
add rax, r8
xor ecx, ecx
mov dl, byte [rax]
test dl, dl
je 0x14003c9b5
mov byte [rsp + rcx + 0x30], dl
inc rcx
mov dl, byte [rcx + rax]
test dl, dl
jne 0x14003c9a7
mov byte [rsp + rcx + 0x30], 0
mov eax, ecx
lea r15, [rsp + 0x30]
jmp 0x14003c6c2