// File: iamlouk[P]asbi/src/parser.cc
// Function: asbi::Parser::parse_final()
ast::Node* Parser::parse_final() {
	tok::Token t = tokenizer.next();
	switch (t.type) {
	case tok::Int:
		return new ast::Number(static_cast<double>(t.integer));
	case tok::Real:
		return new ast::Number(t.real);
	case tok::Bool:
		return new ast::Bool(t.integer != 0 ? true : false);
	case tok::String:{
		auto str = new ast::String(ctx->new_stringconstant(*t.str));
		delete t.str;
		return str;
	}
	case tok::Identifier:{
		auto var = new ast::Variable(ctx->new_stringconstant(*t.str));
		delete t.str;
		return var;
	}
	case tok::Nil:
		return new ast::Nil();
	case tok::Colon:{
		t = tokenizer.next();
		if (t.type != tok::Identifier)
			throw utils::parser_error("expected identifier (symbol)", t);
		auto sym = new ast::Symbol(ctx->new_stringconstant(*t.str));
		delete t.str;
		return sym;
	}
	case tok::LeftBracket:{
		if (tokenizer.peek().type == tok::RightBracket) {
			tokenizer.next();
			return parse_lambda(std::vector<ast::Node*>());
		}

		auto node = parse_expr();
		t = tokenizer.next();
		if (t.type == tok::RightBracket) {
			if (tokenizer.peek().type == tok::Arrow) {
				std::vector<ast::Node*> vec = { node };
				return parse_lambda(vec);
			}
			return node;
		}

		std::vector<ast::Node*> vec = { node };
		while (t.type == tok::Comma) {
			if (tokenizer.peek().type == tok::RightBracket) {
				t = tokenizer.next();
				break;
			}
			vec.push_back(parse_expr());
			t = tokenizer.next();
		}

		if (t.type != tok::RightBracket)
			throw utils::parser_error("expected ',' or ')' while parsing tuple", t);

		if (tokenizer.peek().type == tok::Arrow)
			return parse_lambda(std::move(vec));

		throw utils::parser_error("tuples unimplemented", t);
	}
	case tok::LeftSquareBracket:{
		if (tokenizer.peek().type == tok::Comma) {
			tokenizer.next();
			expect(tok::RightSquareBracket);
			return new ast::List(std::vector<ast::Node*>());
		}

		if (tokenizer.peek().type == tok::KeyValue) {
			tokenizer.next();
			expect(tok::RightSquareBracket);
			return new ast::Map(std::vector<std::pair<ast::Node*,ast::Node*>>());
		}

		auto node = parse_expr();
		auto token = tokenizer.next();
		if (token.type == tok::KeyValue)
			return parse_map(node);

		std::vector<ast::Node*> vec = { node };
		while (token.type == tok::Comma) {
			vec.push_back(parse_expr());
			token = tokenizer.next();
		}

		if (token.type != tok::RightSquareBracket)
			throw utils::parser_error("expected ',' or ')' while parsing list", t);

		return new ast::List(std::move(vec));
	}
	case tok::LeftCurlyBracket:
		return parse_block();
	default:
		throw utils::parser_error("unexpected token", t);
	}
}

// Assembly:
subq $0x498, %rsp            # imm = 0x498
movq %rdi, 0x488(%rsp)
movq 0x488(%rsp), %rdi
movq %rdi, 0x170(%rsp)
callq 0x9340
movq %rax, 0x478(%rsp)
movq %rdx, 0x480(%rsp)
movl 0x478(%rsp), %eax
movq %rax, 0x178(%rsp)
subq $0x1f, %rax
ja 0x11292
movq 0x178(%rsp), %rax
leaq 0x28610(%rip), %rcx     # 0x3878c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl $0x10, %edi
callq 0x6460
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x168(%rsp)
cvtsi2sdl 0x480(%rsp), %xmm0
callq 0x124b0
jmp 0x101ad
movq 0x168(%rsp), %rax
movq %rax, 0x490(%rsp)
jmp 0x1130a
movq 0x168(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x470(%rsp)
movl %eax, 0x46c(%rsp)
movl $0x10, %esi
callq 0x6470
jmp 0x1131a
movl $0x10, %edi
callq 0x6460
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x160(%rsp)
movsd 0x480(%rsp), %xmm0
callq 0x124b0
jmp 0x10215
movq 0x160(%rsp), %rax
movq %rax, 0x490(%rsp)
jmp 0x1130a
movq 0x160(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x470(%rsp)
movl %eax, 0x46c(%rsp)
movl $0x10, %esi
callq 0x6470
jmp 0x1131a
movl $0x10, %edi
callq 0x6460
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x158(%rsp)
movl 0x480(%rsp), %eax
testl %eax, %eax
setne %al
movzbl %al, %esi
callq 0x124f0
jmp 0x10283
movq 0x158(%rsp), %rax
movq %rax, 0x490(%rsp)
jmp 0x1130a
movq 0x158(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x470(%rsp)
movl %eax, 0x46c(%rsp)
movl $0x10, %esi
callq 0x6470
jmp 0x1131a
movl $0x10, %edi
callq 0x6460
movq %rax, %rcx
movq 0x170(%rsp), %rax
movq %rcx, 0x148(%rsp)
movq 0x30(%rax), %rdi
movq 0x480(%rsp), %rsi
callq 0x260c0
movq %rax, 0x150(%rsp)
jmp 0x102fb
movq 0x150(%rsp), %rsi
movq 0x148(%rsp), %rdi
callq 0x12540
jmp 0x10312
movq 0x148(%rsp), %rax
movq %rax, 0x460(%rsp)
movq 0x480(%rsp), %rax
movq %rax, 0x140(%rsp)
cmpq $0x0, %rax
je 0x10357
movq 0x140(%rsp), %rdi
callq 0x6290
movq 0x140(%rsp), %rdi
movl $0x20, %esi
callq 0x6470
movq 0x460(%rsp), %rax
movq %rax, 0x490(%rsp)
jmp 0x1130a
movq 0x148(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x470(%rsp)
movl %eax, 0x46c(%rsp)
movl $0x10, %esi
callq 0x6470
jmp 0x1131a
movl $0x10, %edi
callq 0x6460
movq %rax, %rcx
movq 0x170(%rsp), %rax
movq %rcx, 0x130(%rsp)
movq 0x30(%rax), %rdi
movq 0x480(%rsp), %rsi
callq 0x260c0
movq %rax, 0x138(%rsp)
jmp 0x103cf
movq 0x138(%rsp), %rsi
movq 0x130(%rsp), %rdi
callq 0x12580
jmp 0x103e6
movq 0x130(%rsp), %rax
movq %rax, 0x458(%rsp)
movq 0x480(%rsp), %rax
movq %rax, 0x128(%rsp)
cmpq $0x0, %rax
je 0x1042b
movq 0x128(%rsp), %rdi
callq 0x6290
movq 0x128(%rsp), %rdi
movl $0x20, %esi
callq 0x6470
movq 0x458(%rsp), %rax
movq %rax, 0x490(%rsp)
jmp 0x1130a
movq 0x130(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x470(%rsp)
movl %eax, 0x46c(%rsp)
movl $0x10, %esi
callq 0x6470
jmp 0x1131a
movl $0x8, %edi
callq 0x6460
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x120(%rsp)
callq 0x125c0
jmp 0x1048a
movq 0x120(%rsp), %rax
movq %rax, 0x490(%rsp)
jmp 0x1130a
movq 0x120(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x470(%rsp)
movl %eax, 0x46c(%rsp)
movl $0x8, %esi
callq 0x6470
jmp 0x1131a
movq 0x170(%rsp), %rdi
callq 0x9340
movq %rax, 0x448(%rsp)
movq %rdx, 0x450(%rsp)
movq 0x448(%rsp), %rax
movq %rax, 0x478(%rsp)
movq 0x450(%rsp), %rax
movq %rax, 0x480(%rsp)
cmpl $0x0, 0x478(%rsp)
je 0x1059c
movl $0x48, %edi
callq 0x6200
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x118(%rsp)
movups 0x478(%rsp), %xmm0
movaps %xmm0, 0x430(%rsp)
movq 0x430(%rsp), %rdx
movq 0x438(%rsp), %rcx
leaq 0x2838d(%rip), %rsi     # 0x388e1
callq 0x17350
jmp 0x1055b
movq 0x118(%rsp), %rdi
leaq 0x3afbe(%rip), %rsi     # 0x4b528
leaq 0x172f(%rip), %rdx      # 0x11ca0
callq 0x6780
movq 0x118(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x470(%rsp)
movl %eax, 0x46c(%rsp)
callq 0x6320
jmp 0x1131a
movl $0x10, %edi
callq 0x6460
movq %rax, %rcx
movq 0x170(%rsp), %rax
movq %rcx, 0x108(%rsp)
movq 0x30(%rax), %rdi
movq 0x480(%rsp), %rsi
callq 0x260c0
movq %rax, 0x110(%rsp)
jmp 0x105d4
movq 0x110(%rsp), %rsi
movq 0x108(%rsp), %rdi
callq 0x12420
jmp 0x105eb
movq 0x108(%rsp), %rax
movq %rax, 0x428(%rsp)
movq 0x480(%rsp), %rax
movq %rax, 0x100(%rsp)
cmpq $0x0, %rax
je 0x10630
movq 0x100(%rsp), %rdi
callq 0x6290
movq 0x100(%rsp), %rdi
movl $0x20, %esi
callq 0x6470
movq 0x428(%rsp), %rax
movq %rax, 0x490(%rsp)
jmp 0x1130a
movq 0x108(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x470(%rsp)
movl %eax, 0x46c(%rsp)
movl $0x10, %esi
callq 0x6470
jmp 0x1131a
movq 0x170(%rsp), %rdi
callq 0x92b0
movq %rax, 0x418(%rsp)
movq %rdx, 0x420(%rsp)
cmpl $0x18, 0x418(%rsp)
jne 0x1074b
movq 0x170(%rsp), %rdi
callq 0x9340
movq %rax, 0x408(%rsp)
movq %rdx, 0x410(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x3f0(%rsp)
movq $0x0, 0x400(%rsp)
leaq 0x3f0(%rsp), %rdi
movq %rdi, 0xf0(%rsp)
callq 0x11ce0
movq 0x170(%rsp), %rdi
movq 0xf0(%rsp), %rsi
callq 0x114b0
movq %rax, 0xf8(%rsp)
jmp 0x10703
movq 0xf8(%rsp), %rax
movq %rax, 0x490(%rsp)
leaq 0x3f0(%rsp), %rdi
callq 0x11ed0
jmp 0x1130a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x470(%rsp)
movl %eax, 0x46c(%rsp)
leaq 0x3f0(%rsp), %rdi
callq 0x11ed0
jmp 0x1131a
movq 0x170(%rsp), %rdi
callq 0xe090
movq 0x170(%rsp), %rdi
movq %rax, 0x3e8(%rsp)
callq 0x9340
movq %rax, 0x3d8(%rsp)
movq %rdx, 0x3e0(%rsp)
movq 0x3d8(%rsp), %rax
movq %rax, 0x478(%rsp)
movq 0x3e0(%rsp), %rax
movq %rax, 0x480(%rsp)
cmpl $0x18, 0x478(%rsp)
jne 0x10934
movq 0x170(%rsp), %rdi
callq 0x92b0
movq %rax, 0x3c8(%rsp)
movq %rdx, 0x3d0(%rsp)
cmpl $0xc, 0x3c8(%rsp)
jne 0x1091f
movq 0x3e8(%rsp), %rax
movq %rax, 0x398(%rsp)
leaq 0x398(%rsp), %rax
movq %rax, 0x3a0(%rsp)
movq $0x1, 0x3a8(%rsp)
leaq 0x397(%rsp), %rdi
movq %rdi, 0xe8(%rsp)
callq 0x125f0
movq 0xe8(%rsp), %rcx
movq 0x3a0(%rsp), %rsi
movq 0x3a8(%rsp), %rdx
leaq 0x3b0(%rsp), %rdi
callq 0x12600
jmp 0x1083e
leaq 0x397(%rsp), %rdi
callq 0x12690
leaq 0x378(%rsp), %rdi
leaq 0x3b0(%rsp), %rsi
callq 0x11d60
jmp 0x10862
movq 0x170(%rsp), %rdi
leaq 0x378(%rsp), %rsi
callq 0x114b0
movq %rax, 0xe0(%rsp)
jmp 0x10881
movq 0xe0(%rsp), %rax
movq %rax, 0x490(%rsp)
leaq 0x378(%rsp), %rdi
callq 0x11ed0
leaq 0x3b0(%rsp), %rdi
callq 0x11ed0
jmp 0x1130a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x470(%rsp)
movl %eax, 0x46c(%rsp)
leaq 0x397(%rsp), %rdi
callq 0x12690
jmp 0x1131a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x470(%rsp)
movl %eax, 0x46c(%rsp)
jmp 0x1090d
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x470(%rsp)
movl %eax, 0x46c(%rsp)
leaq 0x378(%rsp), %rdi
callq 0x11ed0
leaq 0x3b0(%rsp), %rdi
callq 0x11ed0
jmp 0x1131a
movq 0x3e8(%rsp), %rax
movq %rax, 0x490(%rsp)
jmp 0x1130a
movq 0x3e8(%rsp), %rax
movq %rax, 0x348(%rsp)
leaq 0x348(%rsp), %rax
movq %rax, 0x350(%rsp)
movq $0x1, 0x358(%rsp)
leaq 0x347(%rsp), %rdi
movq %rdi, 0xd8(%rsp)
callq 0x125f0
movq 0xd8(%rsp), %rcx
movq 0x350(%rsp), %rsi
movq 0x358(%rsp), %rdx
leaq 0x360(%rsp), %rdi
callq 0x12600
jmp 0x1099c
leaq 0x347(%rsp), %rdi
callq 0x12690
cmpl $0x1d, 0x478(%rsp)
jne 0x10b49
movq 0x170(%rsp), %rdi
callq 0x92b0
movq %rdx, 0xc8(%rsp)
movq %rax, 0xd0(%rsp)
jmp 0x109d6
movq 0xc8(%rsp), %rax
movq 0xd0(%rsp), %rcx
movq %rcx, 0x330(%rsp)
movq %rax, 0x338(%rsp)
cmpl $0x18, 0x330(%rsp)
jne 0x10aa7
movq 0x170(%rsp), %rdi
callq 0x9340
movq %rdx, 0xb8(%rsp)
movq %rax, 0xc0(%rsp)
jmp 0x10a23
movq 0xb8(%rsp), %rax
movq 0xc0(%rsp), %rcx
movq %rcx, 0x320(%rsp)
movq %rax, 0x328(%rsp)
movq 0x320(%rsp), %rax
movq %rax, 0x478(%rsp)
movq 0x328(%rsp), %rax
movq %rax, 0x480(%rsp)
jmp 0x10b49
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x470(%rsp)
movl %eax, 0x46c(%rsp)
leaq 0x347(%rsp), %rdi
callq 0x12690
jmp 0x1131a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x470(%rsp)
movl %eax, 0x46c(%rsp)
jmp 0x10d36
movq 0x170(%rsp), %rdi
callq 0xe090
movq %rax, 0xb0(%rsp)
jmp 0x10abe
movq 0xb0(%rsp), %rax
movq %rax, 0x318(%rsp)
leaq 0x360(%rsp), %rdi
leaq 0x318(%rsp), %rsi
callq 0x11cf0
jmp 0x10ae5
movq 0x170(%rsp), %rdi
callq 0x9340
movq %rdx, 0xa0(%rsp)
movq %rax, 0xa8(%rsp)
jmp 0x10b04
movq 0xa0(%rsp), %rax
movq 0xa8(%rsp), %rcx
movq %rcx, 0x308(%rsp)
movq %rax, 0x310(%rsp)
movq 0x308(%rsp), %rax
movq %rax, 0x478(%rsp)
movq 0x310(%rsp), %rax
movq %rax, 0x480(%rsp)
jmp 0x109a9
cmpl $0x18, 0x478(%rsp)
je 0x10be3
movl $0x48, %edi
callq 0x6200
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x98(%rsp)
movups 0x478(%rsp), %xmm0
movaps %xmm0, 0x2f0(%rsp)
movq 0x2f0(%rsp), %rdx
movq 0x2f8(%rsp), %rcx
leaq 0x27d68(%rip), %rsi     # 0x388fe
callq 0x17350
jmp 0x10b9d
movq 0x98(%rsp), %rdi
leaq 0x3a97c(%rip), %rsi     # 0x4b528
leaq 0x10ed(%rip), %rdx      # 0x11ca0
callq 0x6780
jmp 0x11327
movq 0x98(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x470(%rsp)
movl %eax, 0x46c(%rsp)
callq 0x6320
jmp 0x10d36
movq 0x170(%rsp), %rdi
callq 0x92b0
movq %rdx, 0x88(%rsp)
movq %rax, 0x90(%rsp)
jmp 0x10c02
movq 0x88(%rsp), %rax
movq 0x90(%rsp), %rcx
movq %rcx, 0x2e0(%rsp)
movq %rax, 0x2e8(%rsp)
cmpl $0xc, 0x2e0(%rsp)
jne 0x10cb8
leaq 0x2c8(%rsp), %rdi
movq %rdi, 0x78(%rsp)
leaq 0x360(%rsp), %rsi
callq 0x12220
movq 0x170(%rsp), %rdi
movq 0x78(%rsp), %rsi
callq 0x114b0
movq %rax, 0x80(%rsp)
jmp 0x10c66
movq 0x80(%rsp), %rax
movq %rax, 0x490(%rsp)
leaq 0x2c8(%rsp), %rdi
callq 0x11ed0
leaq 0x360(%rsp), %rdi
callq 0x11ed0
jmp 0x1130a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x470(%rsp)
movl %eax, 0x46c(%rsp)
leaq 0x2c8(%rsp), %rdi
callq 0x11ed0
jmp 0x10d36
movl $0x48, %edi
callq 0x6200
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x70(%rsp)
movups 0x478(%rsp), %xmm0
movaps %xmm0, 0x2b0(%rsp)
movq 0x2b0(%rsp), %rdx
movq 0x2b8(%rsp), %rcx
leaq 0x27c32(%rip), %rsi     # 0x38926
callq 0x17350
jmp 0x10cfb
movq 0x70(%rsp), %rdi
leaq 0x3a821(%rip), %rsi     # 0x4b528
leaq 0xf92(%rip), %rdx       # 0x11ca0
callq 0x6780
jmp 0x11327
movq 0x70(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x470(%rsp)
movl %eax, 0x46c(%rsp)
callq 0x6320
leaq 0x360(%rsp), %rdi
callq 0x11ed0
jmp 0x1131a
movq 0x170(%rsp), %rdi
callq 0x92b0
movq %rax, 0x2a0(%rsp)
movq %rdx, 0x2a8(%rsp)
cmpl $0x1d, 0x2a0(%rsp)
jne 0x10e60
movq 0x170(%rsp), %rdi
callq 0x9340
movq 0x170(%rsp), %rdi
movq %rax, 0x290(%rsp)
movq %rdx, 0x298(%rsp)
movl $0x1c, %esi
callq 0xdcd0
movl $0x20, %edi
callq 0x6460
movq %rax, 0x60(%rsp)
movq %rax, 0x58(%rsp)
movb $0x1, 0x26f(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x270(%rsp)
movq $0x0, 0x280(%rsp)
leaq 0x270(%rsp), %rdi
movq %rdi, 0x68(%rsp)
callq 0x11ce0
movq 0x60(%rsp), %rdi
movq 0x68(%rsp), %rsi
callq 0x126a0
jmp 0x10df8
movq 0x58(%rsp), %rax
movb $0x0, 0x26f(%rsp)
movq %rax, 0x490(%rsp)
leaq 0x270(%rsp), %rdi
callq 0x11ed0
jmp 0x1130a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x470(%rsp)
movl %eax, 0x46c(%rsp)
leaq 0x270(%rsp), %rdi
callq 0x11ed0
testb $0x1, 0x26f(%rsp)
jne 0x10e4c
jmp 0x10e5b
movq 0x58(%rsp), %rdi
movl $0x20, %esi
callq 0x6470
jmp 0x1131a
movq 0x170(%rsp), %rdi
callq 0x92b0
movq %rax, 0x258(%rsp)
movq %rdx, 0x260(%rsp)
cmpl $0xd, 0x258(%rsp)
jne 0x10f78
movq 0x170(%rsp), %rdi
callq 0x9340
movq 0x170(%rsp), %rdi
movq %rax, 0x248(%rsp)
movq %rdx, 0x250(%rsp)
movl $0x1c, %esi
callq 0xdcd0
movl $0x20, %edi
callq 0x6460
movq %rax, 0x48(%rsp)
movq %rax, 0x40(%rsp)
movb $0x1, 0x22f(%rsp)
xorps %xmm0, %xmm0
movaps %xmm0, 0x230(%rsp)
movq $0x0, 0x240(%rsp)
leaq 0x230(%rsp), %rdi
movq %rdi, 0x50(%rsp)
callq 0x12710
movq 0x48(%rsp), %rdi
movq 0x50(%rsp), %rsi
callq 0x12720
jmp 0x10f10
movq 0x40(%rsp), %rax
movb $0x0, 0x22f(%rsp)
movq %rax, 0x490(%rsp)
leaq 0x230(%rsp), %rdi
callq 0x12790
jmp 0x1130a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x470(%rsp)
movl %eax, 0x46c(%rsp)
leaq 0x230(%rsp), %rdi
callq 0x12790
testb $0x1, 0x22f(%rsp)
jne 0x10f64
jmp 0x10f73
movq 0x40(%rsp), %rdi
movl $0x20, %esi
callq 0x6470
jmp 0x1131a
movq 0x170(%rsp), %rdi
callq 0xe090
movq 0x170(%rsp), %rdi
movq %rax, 0x220(%rsp)
callq 0x9340
movq %rax, 0x210(%rsp)
movq %rdx, 0x218(%rsp)
cmpl $0xd, 0x210(%rsp)
jne 0x10fd6
movq 0x170(%rsp), %rdi
movq 0x220(%rsp), %rsi
callq 0x11950
movq %rax, 0x490(%rsp)
jmp 0x1130a
movq 0x220(%rsp), %rax
movq %rax, 0x1e0(%rsp)
leaq 0x1e0(%rsp), %rax
movq %rax, 0x1e8(%rsp)
movq $0x1, 0x1f0(%rsp)
leaq 0x1df(%rsp), %rdi
movq %rdi, 0x38(%rsp)
callq 0x125f0
movq 0x38(%rsp), %rcx
movq 0x1e8(%rsp), %rsi
movq 0x1f0(%rsp), %rdx
leaq 0x1f8(%rsp), %rdi
callq 0x12600
jmp 0x11038
leaq 0x1df(%rsp), %rdi
callq 0x12690
cmpl $0x1d, 0x210(%rsp)
jne 0x11122
movq 0x170(%rsp), %rdi
callq 0xe090
movq %rax, 0x30(%rsp)
jmp 0x11067
movq 0x30(%rsp), %rax
movq %rax, 0x1d0(%rsp)
leaq 0x1f8(%rsp), %rdi
leaq 0x1d0(%rsp), %rsi
callq 0x11cf0
jmp 0x1108b
movq 0x170(%rsp), %rdi
callq 0x9340
movq %rdx, 0x20(%rsp)
movq %rax, 0x28(%rsp)
jmp 0x110a4
movq 0x20(%rsp), %rax
movq 0x28(%rsp), %rcx
movq %rcx, 0x1c0(%rsp)
movq %rax, 0x1c8(%rsp)
movq 0x1c0(%rsp), %rax
movq %rax, 0x210(%rsp)
movq 0x1c8(%rsp), %rax
movq %rax, 0x218(%rsp)
jmp 0x11045
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x470(%rsp)
movl %eax, 0x46c(%rsp)
leaq 0x1df(%rsp), %rdi
callq 0x12690
jmp 0x1131a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x470(%rsp)
movl %eax, 0x46c(%rsp)
jmp 0x11269
cmpl $0x1c, 0x210(%rsp)
je 0x111b3
movl $0x48, %edi
callq 0x6200
movq %rax, %rdi
movq %rdi, %rax
movq %rax, 0x18(%rsp)
movups 0x478(%rsp), %xmm0
movaps %xmm0, 0x1b0(%rsp)
movq 0x1b0(%rsp), %rdx
movq 0x1b8(%rsp), %rcx
leaq 0x277cf(%rip), %rsi     # 0x3893b
callq 0x17350
jmp 0x11173
movq 0x18(%rsp), %rdi
leaq 0x3a3a9(%rip), %rsi     # 0x4b528
leaq 0xb1a(%rip), %rdx       # 0x11ca0
callq 0x6780
jmp 0x11327
movq 0x18(%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x470(%rsp)
movl %eax, 0x46c(%rsp)
callq 0x6320
jmp 0x11269
movl $0x20, %edi
callq 0x6460
movq %rax, 0x10(%rsp)
jmp 0x111c4
movb $0x1, 0x197(%rsp)
leaq 0x198(%rsp), %rdi
movq %rdi, 0x8(%rsp)
leaq 0x1f8(%rsp), %rsi
callq 0x12220
movq 0x10(%rsp), %rdi
movq 0x8(%rsp), %rsi
callq 0x126a0
jmp 0x111f7
movq 0x10(%rsp), %rax
movb $0x0, 0x197(%rsp)
movq %rax, 0x490(%rsp)
leaq 0x198(%rsp), %rdi
callq 0x11ed0
leaq 0x1f8(%rsp), %rdi
callq 0x11ed0
jmp 0x1130a
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x470(%rsp)
movl %eax, 0x46c(%rsp)
leaq 0x198(%rsp), %rdi
callq 0x11ed0
testb $0x1, 0x197(%rsp)
jne 0x11258
jmp 0x11267
movq 0x10(%rsp), %rdi
movl $0x20, %esi
callq 0x6470
jmp 0x11269
leaq 0x1f8(%rsp), %rdi
callq 0x11ed0
jmp 0x1131a
movq 0x170(%rsp), %rdi
callq 0xee60
movq %rax, 0x490(%rsp)
jmp 0x1130a
movl $0x48, %edi
callq 0x6200
movq %rax, %rdi
movq %rdi, %rax
movq %rax, (%rsp)
movups 0x478(%rsp), %xmm0
movaps %xmm0, 0x180(%rsp)
movq 0x180(%rsp), %rdx
movq 0x188(%rsp), %rcx
leaq 0x2753f(%rip), %rsi     # 0x3880c
callq 0x17350
jmp 0x112d4
movq (%rsp), %rdi
leaq 0x3a249(%rip), %rsi     # 0x4b528
leaq 0x9ba(%rip), %rdx       # 0x11ca0
callq 0x6780
movq (%rsp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, 0x470(%rsp)
movl %eax, 0x46c(%rsp)
callq 0x6320
jmp 0x1131a
movq 0x490(%rsp), %rax
addq $0x498, %rsp            # imm = 0x498
retq
movq 0x470(%rsp), %rdi
callq 0x67a0
nopw (%rax,%rax)