// File: /workspace/github_cpp_makefile_star2_O1/luizaes[P]post-machine-simulator/post_machine_sim.cpp
// Function: PostMachineSimulator::BuildDiagram()
DiagramState* PostMachineSimulator::BuildDiagram() {
	string state_name, input_entry, transition, error_text;
	int number_states, number_transitions, output, start_index = 0;
	node node_aux;
	state state_aux;
	bool error_found = false, state_found = false;
	char symbol, current_queue_symbol = NONE;

	/* Read the number of states the Post Machine has */
	cin >> number_states;

	/* Read the name of each of these states, storing them in an adjacency list */
	for (int i = 0; i < number_states; i++) {
		cin >> state_name;
		node_aux.name = state_name;
		flow_diagram.push_back(node_aux);
	}

	/* Read the name of the starting state */
	cin >> start_state;

	/* Read the name of the accepting state - we don't have a rejection state, 
	   the machine halts and rejects an input by indefinition */
	cin >> accept_state;

	/* Read the number of transitions present in the diagram */
	cin >> number_transitions;

	/* Read each transition */
	for(int i = 0; i < number_transitions; i++) {
		cin >> transition;
		state_found = false;

		for (int j = 0; j < number_states; j++) {
			/* If the state specified in the transition exists */
			if(flow_diagram[j].name.compare(transition) == 0) {
				state_found = true;

				/* If the transition starts with a READ state */
				if(transition.front() == 'R' || transition.front() == 'r') {
					cin >> symbol;
					ReadInputLine(transition);

					if(transition.compare(start_state) == 0) {
						string message = "[ERROR] Invalid transition: it's not possible to have a transition pointing to the starting state.";
						DiagramState* response = new DiagramState(/*has_error=*/true, message);
						return response;
					} else if(transition.compare(" " + accept_state) != 0 && (transition.at(1) == 'A' || transition.at(1) == 'a')) {
						current_queue_symbol = transition.substr(transition.length()-1, 1).front();
						transition = transition.substr(1, transition.length()-3);
					} else {
						transition = transition.substr(1, transition.length()-1);
					}

					state_aux.name = transition;
					state_aux.read_symbol = symbol;
					state_aux.add_symbol = current_queue_symbol;
					current_queue_symbol = NONE;
					flow_diagram[j].flows.push_back(state_aux);

				/* If the transition starts with a START state */
				} else if(transition.compare(start_state) == 0) {
					ReadInputLine(transition);

					if(transition.at(1) == 'A' || transition.at(1) == 'a') {
						current_queue_symbol = transition.substr(transition.length()-1, 1).front();
						transition = transition.substr(1, transition.length()-3);
					}

					state_aux.name = transition;
					state_aux.read_symbol = NONE;
					state_aux.add_symbol = current_queue_symbol;
					current_queue_symbol = NONE;
					flow_diagram[j].flows.push_back(state_aux);
				}  else if(transition.compare(accept_state) == 0) {
					string message = "[ERROR] Invalid transition: the accepting state cannot have a transition to any other state.";
					DiagramState* response = new DiagramState(/*has_error=*/true, message);
					return response;
				/* If the transition starts with an ADD state */
				} else if(transition.front() == 'A' || transition.front() == 'a') {
					cin >> symbol;
					ReadInputLine(transition);
					if(transition.compare(" " + start_state) == 0) {
						string message = "[ERROR] Invalid transition: it's not possible to have a transition pointing to the starting state.";
						DiagramState* response = new DiagramState(/*has_error=*/true, message);
						return response;
					} else if(transition.at(1) == 'A' || transition.at(1) == 'a') {
						current_queue_symbol = transition.substr(transition.length()-1, 1).front();
						transition = transition.substr(1, transition.length()-3);
					} else {
						transition = transition.substr(1, transition.length()-1);
					}
					state_aux.name = transition;
					state_aux.read_symbol = NONE;
					state_aux.add_symbol = current_queue_symbol;
					current_queue_symbol = NONE;
					flow_diagram[j].flows.push_back(state_aux);
				}
				break;
			}
		}

		if(!state_found) {
			string message = "[ERROR] Invalid transition: the specified state does not exist.";
			DiagramState* response = new DiagramState(/*has_error=*/true, message);
			return response;
		}
	}
	string message = "";
	DiagramState* response = new DiagramState(/*has_error=*/false, message);
	return response;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
subq $0x148, %rsp            # imm = 0x148
movq %rdi, %r15
leaq -0xe0(%rbp), %rcx
movq %rcx, -0x10(%rcx)
xorl %eax, %eax
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq -0x120(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq -0x68(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq -0x100(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq -0x158(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
leaq -0x148(%rbp), %rcx
movq %rcx, 0x8(%rcx)
movq %rcx, (%rcx)
movq %rax, 0x10(%rcx)
leaq -0xb8(%rbp), %rcx
movq %rcx, -0x10(%rcx)
movq %rax, -0x8(%rcx)
movb %al, (%rcx)
movq 0x4311(%rip), %rdi      # 0x6fe0
leaq -0x7c(%rbp), %rsi
callq 0x2100
cmpl $0x0, -0x7c(%rbp)
jle 0x2d20
xorl %r13d, %r13d
movq 0x42f8(%rip), %rbx      # 0x6fe0
leaq -0xf0(%rbp), %r14
leaq -0x168(%rbp), %r12
movq %rbx, %rdi
movq %r14, %rsi
callq 0x21d0
movq %r12, %rdi
movq %r14, %rsi
callq 0x20e0
movq %r15, %rdi
movq %r12, %rsi
callq 0x37d8
incl %r13d
cmpl -0x7c(%rbp), %r13d
jl 0x2cf6
leaq 0x68(%r15), %rsi
movq 0x42b5(%rip), %rdi      # 0x6fe0
movq %rsi, -0xa0(%rbp)
callq 0x21d0
leaq 0x88(%r15), %rsi
movq 0x429b(%rip), %rdi      # 0x6fe0
movq %rsi, -0xd0(%rbp)
callq 0x21d0
movq 0x4288(%rip), %rdi      # 0x6fe0
leaq -0x94(%rbp), %rsi
callq 0x2100
cmpl $0x0, -0x94(%rbp)
setg %bl
jle 0x342a
xorl %r14d, %r14d
movb %bl, -0x49(%rbp)
movq 0x425f(%rip), %rdi      # 0x6fe0
leaq -0x78(%rbp), %rsi
callq 0x21d0
cmpl $0x0, -0x7c(%rbp)
setg %bl
movb $0x1, %r12b
jle 0x324a
movq %r14, -0x88(%rbp)
movl $0x20, %r13d
xorl %r14d, %r14d
movq (%r15), %rax
leaq (%rax,%r13), %rdi
addq $-0x20, %rdi
leaq -0x78(%rbp), %rsi
callq 0x2040
testl %eax, %eax
je 0x2dda
incq %r14
movslq -0x7c(%rbp), %rax
addq $0x38, %r13
cmpq %rax, %r14
setl %bl
jl 0x2daa
jmp 0x3243
movq -0x78(%rbp), %rax
movzbl (%rax), %eax
orl $0x20, %eax
cmpl $0x72, %eax
jne 0x2e63
movq 0x41f0(%rip), %rdi      # 0x6fe0
leaq -0x4a(%rbp), %rsi
callq 0x21e0
leaq -0x78(%rbp), %rdi
callq 0x2970
leaq -0x78(%rbp), %rdi
movq -0xa0(%rbp), %rsi
callq 0x2040
testl %eax, %eax
je 0x2f08
leaq -0x48(%rbp), %rdi
leaq 0x22d6(%rip), %rsi      # 0x50fb
movq -0xd0(%rbp), %rdx
callq 0x3810
movq -0x70(%rbp), %r12
movq -0x40(%rbp), %r14
cmpq %r12, %r14
movq %r12, %rdx
cmovbq %r14, %rdx
testq %rdx, %rdx
je 0x2f54
movq -0x48(%rbp), %rsi
movq -0x78(%rbp), %rdi
callq 0x2190
testl %eax, %eax
sete %al
jmp 0x2f56
leaq -0x78(%rbp), %rdi
movq -0xa0(%rbp), %rsi
callq 0x2040
testl %eax, %eax
je 0x3002
leaq -0x78(%rbp), %rdi
movq -0xd0(%rbp), %rsi
callq 0x2040
testl %eax, %eax
je 0x31ac
movq -0x78(%rbp), %rax
movzbl (%rax), %eax
orl $0x20, %eax
cmpl $0x61, %eax
jne 0x3243
movq 0x4133(%rip), %rdi      # 0x6fe0
leaq -0x4a(%rbp), %rsi
callq 0x21e0
leaq -0x78(%rbp), %rdi
callq 0x2970
leaq -0x48(%rbp), %rdi
leaq 0x2231(%rip), %rsi      # 0x50fb
movq -0xa0(%rbp), %rdx
callq 0x3810
movq -0x70(%rbp), %r14
movq -0x40(%rbp), %r12
cmpq %r14, %r12
movq %r14, %rdx
cmovbq %r12, %rdx
testq %rdx, %rdx
je 0x3274
movq -0x48(%rbp), %rsi
movq -0x78(%rbp), %rdi
callq 0x2190
testl %eax, %eax
sete %cl
jmp 0x3276
leaq -0x38(%rbp), %rax
movq %rax, -0x48(%rbp)
leaq -0x48(%rbp), %r12
movq %r12, %rdi
leaq 0x217a(%rip), %rsi      # 0x5098
leaq 0x21d5(%rip), %rdx      # 0x50fa
callq 0x3fba
movq -0x88(%rbp), %r14
movl $0x28, %edi
callq 0x2170
movq %rax, -0x58(%rbp)
movq %rax, %rdi
movl $0x1, %esi
movq %r12, %rdx
callq 0x4054
jmp 0x32e8
movb $0x1, %al
cmpq %r14, %r12
sete %cl
testb %cl, %al
je 0x2fc4
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x2f79
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2180
leaq -0x78(%rbp), %r14
movq -0x70(%rbp), %rcx
decq %rcx
movl $0x1, %edx
leaq -0x48(%rbp), %r12
movq %r12, %rdi
movq %r14, %rsi
callq 0x21a0
movq %r14, %rdi
movq %r12, %rsi
callq 0x21c0
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x2fbc
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2180
movb $0x24, %r12b
jmp 0x315f
cmpq $0x1, %r12
jbe 0x35c3
movq -0x78(%rbp), %rax
movb 0x1(%rax), %r14b
cmpb $0x41, %r14b
jne 0x30b8
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x2ff9
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2180
leaq -0x78(%rbp), %r14
jmp 0x30df
leaq -0x78(%rbp), %rdi
callq 0x2970
movq -0x70(%rbp), %rax
cmpq $0x2, %rax
jb 0x35d9
movq -0x78(%rbp), %rcx
movzbl 0x1(%rcx), %ecx
orl $0x20, %ecx
cmpl $0x61, %ecx
leaq -0x78(%rbp), %rsi
jne 0x31f8
decq %rax
movl $0x1, %ecx
leaq -0x48(%rbp), %rdi
movq %rax, %rdx
callq 0x21a0
movq -0x48(%rbp), %rdi
movb (%rdi), %al
movb %al, -0x90(%rbp)
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x3066
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2180
movq -0x70(%rbp), %rcx
addq $-0x3, %rcx
movl $0x1, %edx
leaq -0x48(%rbp), %r14
movq %r14, %rdi
leaq -0x78(%rbp), %rsi
callq 0x21a0
leaq -0x78(%rbp), %rdi
movq %r14, %rsi
callq 0x21c0
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x30a8
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2180
leaq -0x78(%rbp), %rsi
movb -0x90(%rbp), %r14b
jmp 0x31fb
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x30d1
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2180
cmpb $0x61, %r14b
leaq -0x78(%rbp), %r14
jne 0x2f7d
movq -0x70(%rbp), %rdx
decq %rdx
movl $0x1, %ecx
leaq -0x48(%rbp), %rdi
movq %r14, %rsi
callq 0x21a0
movq -0x48(%rbp), %rdi
movb (%rdi), %al
movb %al, -0x90(%rbp)
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x3118
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2180
movq -0x70(%rbp), %rcx
addq $-0x3, %rcx
movl $0x1, %edx
leaq -0x48(%rbp), %r12
movq %r12, %rdi
movq %r14, %rsi
callq 0x21a0
movq %r14, %rdi
movq %r12, %rsi
callq 0x21c0
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x3158
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2180
movb -0x90(%rbp), %r12b
leaq -0xc8(%rbp), %rdi
movq %r14, %rsi
callq 0x20e0
movb -0x4a(%rbp), %al
movb %al, -0xa8(%rbp)
movb %r12b, -0xa7(%rbp)
movq (%r15), %r14
leaq (%r14,%r13), %r12
movq %r12, %rdi
leaq -0xc8(%rbp), %rsi
callq 0x3dd6
movq %rax, %rdi
movq %r12, %rsi
callq 0x2050
incq 0x10(%r14,%r13)
movb $0x1, %r12b
jmp 0x3243
leaq -0x38(%rbp), %rax
movq %rax, -0x48(%rbp)
leaq -0x48(%rbp), %r12
movq %r12, %rdi
leaq 0x1f3b(%rip), %rsi      # 0x50fd
leaq 0x1f90(%rip), %rdx      # 0x5159
callq 0x3fba
movl $0x28, %edi
callq 0x2170
movq -0x88(%rbp), %r14
movq %rax, -0x58(%rbp)
movq %rax, %rdi
movl $0x1, %esi
movq %r12, %rdx
callq 0x4054
jmp 0x32e8
movb $0x24, %r14b
leaq -0xc8(%rbp), %rdi
callq 0x20e0
movb $0x24, -0xa8(%rbp)
movb %r14b, -0xa7(%rbp)
movq (%r15), %r14
leaq (%r14,%r13), %rdi
movq %rdi, -0x90(%rbp)
leaq -0xc8(%rbp), %rsi
callq 0x3dd6
movq %rax, %rdi
movq -0x90(%rbp), %rsi
callq 0x2050
incq 0x10(%r14,%r13)
movq -0x88(%rbp), %r14
testb %r12b, %r12b
je 0x342c
testb $0x1, %bl
je 0x3431
incl %r14d
cmpl -0x94(%rbp), %r14d
setl %bl
jl 0x2d77
jmp 0x348a
movb $0x1, %cl
cmpq %r12, %r14
sete %r14b
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x329c
movq -0x38(%rbp), %rsi
incq %rsi
movl %ecx, %r12d
callq 0x2180
movl %r12d, %ecx
andb %r14b, %cl
je 0x3309
leaq -0x38(%rbp), %rax
movq %rax, -0x48(%rbp)
leaq -0x48(%rbp), %r12
movq %r12, %rdi
leaq 0x1de1(%rip), %rsi      # 0x5098
leaq 0x1e3c(%rip), %rdx      # 0x50fa
callq 0x3fba
movq -0x88(%rbp), %r14
movl $0x28, %edi
callq 0x2170
movq %rax, -0x58(%rbp)
movq %rax, %rdi
movl $0x1, %esi
movq %r12, %rdx
callq 0x4054
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x3301
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2180
xorl %r12d, %r12d
jmp 0x324a
movq -0x70(%rbp), %rax
cmpq $0x1, %rax
jbe 0x35d9
movq -0x78(%rbp), %rcx
movzbl 0x1(%rcx), %ecx
orl $0x20, %ecx
cmpl $0x61, %ecx
leaq -0x78(%rbp), %r12
jne 0x33b0
decq %rax
movl $0x1, %ecx
leaq -0x48(%rbp), %rdi
movq %r12, %rsi
movq %rax, %rdx
callq 0x21a0
movq -0x48(%rbp), %rdi
movb (%rdi), %al
movb %al, -0x90(%rbp)
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x3367
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2180
movq -0x70(%rbp), %rcx
addq $-0x3, %rcx
movl $0x1, %edx
leaq -0x48(%rbp), %r14
movq %r14, %rdi
movq %r12, %rsi
callq 0x21a0
movq %r12, %rdi
movq %r14, %rsi
callq 0x21c0
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x33a7
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2180
movb -0x90(%rbp), %r14b
jmp 0x33f1
decq %rax
movl $0x1, %edx
leaq -0x48(%rbp), %r14
movq %r14, %rdi
movq %r12, %rsi
movq %rax, %rcx
callq 0x21a0
movq %r12, %rdi
movq %r14, %rsi
callq 0x21c0
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x33ee
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2180
movb $0x24, %r14b
leaq -0xc8(%rbp), %rdi
leaq -0x78(%rbp), %rsi
callq 0x20e0
movb $0x24, -0xa8(%rbp)
movb %r14b, -0xa7(%rbp)
movq (%r15), %r14
leaq (%r14,%r13), %r12
movq %r12, %rdi
leaq -0xc8(%rbp), %rsi
callq 0x3dd6
jmp 0x3194
jmp 0x348a
movb -0x49(%rbp), %bl
jmp 0x348a
leaq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
movq %rax, (%rdi)
leaq 0x1d17(%rip), %rsi      # 0x515a
leaq 0x1d4f(%rip), %rdx      # 0x5199
callq 0x3fba
movl $0x28, %edi
callq 0x2170
movb -0x49(%rbp), %bl
leaq -0x48(%rbp), %rdx
movq %rax, -0x58(%rbp)
movq %rax, %rdi
movl $0x1, %esi
callq 0x4054
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x348a
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2180
testb $0x1, %bl
jne 0x34de
leaq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
movq %rax, (%rdi)
leaq 0x1c5b(%rip), %rdx      # 0x50fc
movq %rdx, %rsi
callq 0x3fba
movl $0x28, %edi
callq 0x2170
leaq -0x48(%rbp), %rdx
movq %rax, -0x58(%rbp)
movq %rax, %rdi
xorl %esi, %esi
callq 0x4054
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x34de
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2180
movq -0xc8(%rbp), %rdi
leaq -0xb8(%rbp), %rax
cmpq %rax, %rdi
je 0x3500
movq -0xb8(%rbp), %rsi
incq %rsi
callq 0x2180
leaq -0x148(%rbp), %rdi
callq 0x291e
movq -0x168(%rbp), %rdi
leaq -0x158(%rbp), %rax
cmpq %rax, %rdi
je 0x352e
movq -0x158(%rbp), %rsi
incq %rsi
callq 0x2180
movq -0x110(%rbp), %rdi
leaq -0x100(%rbp), %rax
cmpq %rax, %rdi
je 0x3550
movq -0x100(%rbp), %rsi
incq %rsi
callq 0x2180
movq -0x78(%rbp), %rdi
leaq -0x68(%rbp), %rax
cmpq %rax, %rdi
je 0x3569
movq -0x68(%rbp), %rsi
incq %rsi
callq 0x2180
movq -0x130(%rbp), %rdi
leaq -0x120(%rbp), %rax
cmpq %rax, %rdi
je 0x358b
movq -0x120(%rbp), %rsi
incq %rsi
callq 0x2180
movq -0xf0(%rbp), %rdi
leaq -0xe0(%rbp), %rax
cmpq %rax, %rdi
je 0x35ad
movq -0xe0(%rbp), %rsi
incq %rsi
callq 0x2180
movq -0x58(%rbp), %rax
addq $0x148, %rsp            # imm = 0x148
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x1c44(%rip), %rdi      # 0x520e
movl $0x1, %esi
movq %r12, %rdx
xorl %eax, %eax
callq 0x2200
leaq 0x1c2e(%rip), %rdi      # 0x520e
movl $0x1, %esi
movq %rax, %rdx
xorl %eax, %eax
callq 0x2200
jmp 0x365a
jmp 0x365a
jmp 0x365a
jmp 0x361b
jmp 0x362e
jmp 0x365a
jmp 0x361b
jmp 0x362e
jmp 0x365a
jmp 0x365a
jmp 0x365a
jmp 0x365a
jmp 0x361b
jmp 0x362e
jmp 0x365a
jmp 0x365a
jmp 0x365a
jmp 0x365a
jmp 0x362e
jmp 0x361b
jmp 0x362e
jmp 0x365a
movq %rax, %rbx
movl $0x28, %esi
movq -0x58(%rbp), %rdi
callq 0x2180
jmp 0x3631
movq %rax, %rbx
movq -0x48(%rbp), %rdi
leaq -0x38(%rbp), %rax
cmpq %rax, %rdi
je 0x365d
movq -0x38(%rbp), %rsi
incq %rsi
callq 0x2180
jmp 0x365d
jmp 0x365a
jmp 0x365a
jmp 0x365a
jmp 0x365a
jmp 0x365a
jmp 0x365a
jmp 0x365a
movq %rax, %rbx
movq -0xc8(%rbp), %rdi
leaq -0xb8(%rbp), %rax
cmpq %rax, %rdi
je 0x367f
movq -0xb8(%rbp), %rsi
incq %rsi
callq 0x2180
leaq -0x168(%rbp), %rdi
callq 0x38a2
movq -0x110(%rbp), %rdi
leaq -0x100(%rbp), %rax
cmpq %rax, %rdi
je 0x36ad
movq -0x100(%rbp), %rsi
incq %rsi
callq 0x2180
movq -0x78(%rbp), %rdi
leaq -0x68(%rbp), %rax
cmpq %rax, %rdi
je 0x36c6
movq -0x68(%rbp), %rsi
incq %rsi
callq 0x2180
movq -0x130(%rbp), %rdi
leaq -0x120(%rbp), %rax
cmpq %rax, %rdi
je 0x36e8
movq -0x120(%rbp), %rsi
incq %rsi
callq 0x2180
movq -0xf0(%rbp), %rdi
leaq -0xe0(%rbp), %rax
cmpq %rax, %rdi
je 0x370a
movq -0xe0(%rbp), %rsi
incq %rsi
callq 0x2180
movq %rbx, %rdi
callq 0x2250