// File: Laakeri[P]maxpre/src/log.cpp
// Function: maxPreprocessor::Log::timePlan(double, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>)
void Log::timePlan(double timeLimit_, string useTechniques) {
	eTime.resize(30);
	// magic constants
	eTime[Technique::BCE] = 0.05;
	eTime[Technique::UP] = 0.03;
	eTime[Technique::BVE] = 0.3;
	eTime[Technique::SE] = 0.2;
	eTime[Technique::SSR] = 0.15;
	eTime[Technique::SLE] = 0.03;
	eTime[Technique::BCR] = 0.03;
	eTime[Technique::SIE] = 0.05;
	eTime[Technique::EE] = 0.15;
	eTime[Technique::BVA] = 0.15;
	eTime[Technique::GSLE] = 0.08;
	eTime[Technique::FLP] = 0.15;
	eTime[Technique::UH] = 0.15;
	eTime[Technique::LS] = 0.15;
	set<Technique> useT;
	for (char c : useTechniques) {
		if (c == '[' || c == ']' || c == '#') continue;
		useT.insert(charToTechnique(c));
	}
	if (timeLimit_ < 0) timeLimit_ = 0;
	timeLimit += timeLimit_;
	double useTotal = 0;
	for (Technique t : useT) {
		assert(t < eTime.size());
		useTotal += eTime[t];
	}
	tTimeLimit.resize(eTime.size());
	for (Technique t : useT) {
		if (useTotal < 1e-9) tTimeLimit[t] = 0;
		else tTimeLimit[t] += timeLimit_*eTime[t]/useTotal;
	}
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x110, %rsp            # imm = 0x110
movq %rsi, -0xd8(%rbp)
movq %rdi, -0x8(%rbp)
movsd %xmm0, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x8(%rbp), %rdi
movq %rdi, -0xe0(%rbp)
movl $0x1e, %esi
callq 0x62cb0
movq -0xe0(%rbp), %rdi
movl $0x1, %esi
callq 0x62d40
movq -0xe0(%rbp), %rdi
movsd 0x258b4(%rip), %xmm0    # 0x87848
movsd %xmm0, (%rax)
movl $0x2, %esi
callq 0x62d40
movq -0xe0(%rbp), %rdi
movsd 0x2589f(%rip), %xmm0    # 0x87850
movsd %xmm0, (%rax)
movl $0x3, %esi
callq 0x62d40
movq -0xe0(%rbp), %rdi
movsd 0x25892(%rip), %xmm0    # 0x87860
movsd %xmm0, (%rax)
movl $0x4, %esi
callq 0x62d40
movq -0xe0(%rbp), %rdi
movsd 0x2586d(%rip), %xmm0    # 0x87858
movsd %xmm0, (%rax)
movl $0x5, %esi
callq 0x62d40
movq -0xe0(%rbp), %rdi
movsd 0x25830(%rip), %xmm0    # 0x87838
movsd %xmm0, (%rax)
movl $0x6, %esi
callq 0x62d40
movq -0xe0(%rbp), %rdi
movsd 0x2582b(%rip), %xmm0    # 0x87850
movsd %xmm0, (%rax)
movl $0x7, %esi
callq 0x62d40
movq -0xe0(%rbp), %rdi
movsd 0x2580e(%rip), %xmm0    # 0x87850
movsd %xmm0, (%rax)
movl $0x8, %esi
callq 0x62d40
movq -0xe0(%rbp), %rdi
movsd 0x257e9(%rip), %xmm0    # 0x87848
movsd %xmm0, (%rax)
movl $0x9, %esi
callq 0x62d40
movq -0xe0(%rbp), %rdi
movsd 0x257bc(%rip), %xmm0    # 0x87838
movsd %xmm0, (%rax)
movl $0xa, %esi
callq 0x62d40
movq -0xe0(%rbp), %rdi
movsd 0x2579f(%rip), %xmm0    # 0x87838
movsd %xmm0, (%rax)
movl $0xb, %esi
callq 0x62d40
movq -0xe0(%rbp), %rdi
movsd 0x2578a(%rip), %xmm0    # 0x87840
movsd %xmm0, (%rax)
movl $0xc, %esi
callq 0x62d40
movq -0xe0(%rbp), %rdi
movsd 0x25765(%rip), %xmm0    # 0x87838
movsd %xmm0, (%rax)
movl $0xd, %esi
callq 0x62d40
movq -0xe0(%rbp), %rdi
movsd 0x25748(%rip), %xmm0    # 0x87838
movsd %xmm0, (%rax)
movl $0xe, %esi
callq 0x62d40
movsd 0x25732(%rip), %xmm0    # 0x87838
movsd %xmm0, (%rax)
leaq -0x48(%rbp), %rdi
callq 0x62d60
movq -0xd8(%rbp), %rsi
movq %rsi, -0x50(%rbp)
movq -0x50(%rbp), %rdi
callq 0x4350
movq %rax, -0x58(%rbp)
movq -0x50(%rbp), %rdi
callq 0x4210
movq %rax, -0x60(%rbp)
leaq -0x58(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0xa670
testb $0x1, %al
jne 0x6214e
jmp 0x621e7
leaq -0x58(%rbp), %rdi
callq 0xa6b0
movb (%rax), %al
movb %al, -0x61(%rbp)
movsbl -0x61(%rbp), %eax
cmpl $0x5b, %eax
je 0x62177
movsbl -0x61(%rbp), %eax
cmpl $0x5d, %eax
je 0x62177
movsbl -0x61(%rbp), %eax
cmpl $0x23, %eax
jne 0x62179
jmp 0x621bf
movq -0xe0(%rbp), %rdi
movsbl -0x61(%rbp), %esi
callq 0x61df0
movl %eax, -0x68(%rbp)
leaq -0x48(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x62d80
movb %dl, -0xe9(%rbp)
movq %rax, -0xe8(%rbp)
jmp 0x621a8
movb -0xe9(%rbp), %al
movq -0xe8(%rbp), %rcx
movq %rcx, -0x88(%rbp)
movb %al, -0x80(%rbp)
leaq -0x58(%rbp), %rdi
callq 0xa6d0
jmp 0x62138
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x70(%rbp)
movl %eax, -0x74(%rbp)
leaq -0x48(%rbp), %rdi
callq 0x62ed0
jmp 0x62446
xorps %xmm0, %xmm0
ucomisd -0x10(%rbp), %xmm0
jbe 0x621f9
xorps %xmm0, %xmm0
movsd %xmm0, -0x10(%rbp)
movq -0xe0(%rbp), %rax
movsd -0x10(%rbp), %xmm0
addsd 0x58(%rax), %xmm0
movsd %xmm0, 0x58(%rax)
xorps %xmm0, %xmm0
movsd %xmm0, -0x90(%rbp)
leaq -0x48(%rbp), %rax
movq %rax, -0x98(%rbp)
movq -0x98(%rbp), %rdi
callq 0x62dd0
movq %rax, -0xa0(%rbp)
movq -0x98(%rbp), %rdi
callq 0x62e00
movq %rax, -0xa8(%rbp)
leaq -0xa0(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x62e30
testb $0x1, %al
jne 0x62267
jmp 0x622fd
leaq -0xa0(%rbp), %rdi
callq 0x62e60
movq -0xe0(%rbp), %rdi
movl (%rax), %eax
movl %eax, -0xac(%rbp)
movl -0xac(%rbp), %eax
movq %rax, -0xf8(%rbp)
callq 0x62e80
movq %rax, %rcx
movq -0xf8(%rbp), %rax
cmpq %rcx, %rax
jae 0x622a5
jmp 0x622c4
leaq 0x258ee(%rip), %rdi     # 0x87b9a
leaq 0x255e8(%rip), %rsi     # 0x8789b
movl $0xbe, %edx
leaq 0x258ec(%rip), %rcx     # 0x87bab
callq 0x4260
movq -0xe0(%rbp), %rdi
movl -0xac(%rbp), %eax
movl %eax, %esi
callq 0x62d40
movsd (%rax), %xmm0
addsd -0x90(%rbp), %xmm0
movsd %xmm0, -0x90(%rbp)
leaq -0xa0(%rbp), %rdi
callq 0x62ea0
jmp 0x6224b
movq -0xe0(%rbp), %rdi
movq %rdi, %rax
addq $0x18, %rax
movq %rax, -0x100(%rbp)
callq 0x62e80
movq -0x100(%rbp), %rdi
movq %rax, %rsi
callq 0x62cb0
jmp 0x62328
leaq -0x48(%rbp), %rax
movq %rax, -0xb8(%rbp)
movq -0xb8(%rbp), %rdi
callq 0x62dd0
movq %rax, -0xc0(%rbp)
movq -0xb8(%rbp), %rdi
callq 0x62e00
movq %rax, -0xc8(%rbp)
leaq -0xc0(%rbp), %rdi
leaq -0xc8(%rbp), %rsi
callq 0x62e30
testb $0x1, %al
jne 0x62375
jmp 0x62434
leaq -0xc0(%rbp), %rdi
callq 0x62e60
movl (%rax), %eax
movl %eax, -0xcc(%rbp)
movsd 0x254d7(%rip), %xmm0    # 0x87868
ucomisd -0x90(%rbp), %xmm0
jbe 0x623bc
movq -0xe0(%rbp), %rdi
addq $0x18, %rdi
movl -0xcc(%rbp), %eax
movl %eax, %esi
callq 0x62d40
xorps %xmm0, %xmm0
movsd %xmm0, (%rax)
jmp 0x62421
movq -0xe0(%rbp), %rdi
movsd -0x10(%rbp), %xmm0
movsd %xmm0, -0x110(%rbp)
movl -0xcc(%rbp), %eax
movl %eax, %esi
callq 0x62d40
movsd -0x110(%rbp), %xmm0
movq -0xe0(%rbp), %rdi
mulsd (%rax), %xmm0
divsd -0x90(%rbp), %xmm0
movsd %xmm0, -0x108(%rbp)
addq $0x18, %rdi
movl -0xcc(%rbp), %eax
movl %eax, %esi
callq 0x62d40
movsd -0x108(%rbp), %xmm0
addsd (%rax), %xmm0
movsd %xmm0, (%rax)
jmp 0x62423
leaq -0xc0(%rbp), %rdi
callq 0x62ea0
jmp 0x62359
leaq -0x48(%rbp), %rdi
callq 0x62ed0
addq $0x110, %rsp            # imm = 0x110
popq %rbp
retq
movq -0x70(%rbp), %rdi
callq 0x4610
nop