// File: ixchow[P]http-tweak/tweak.cpp
// Function: json_to_utf8(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>> const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char>>*)
static bool json_to_utf8(std::string const &data, std::string *_out, std::string *error) {
	assert(_out);
	auto it = std::back_inserter(*_out);
	auto c = data.begin();

	auto read_hex4 = [&]() -> uint16_t {
		uint32_t val = 0;
		for (uint_fast32_t i = 0; i < 4; ++i) {
			val *= 16;
			if (c == data.end()) throw std::runtime_error("Unicode escape includes end-of-string.");
			else if (*c >= '0' && *c <= '9') val += (*c - '0');
			else if (*c >= 'a' && *c <= 'f') val += (*c - 'a') + 10;
			else if (*c >= 'a' && *c <= 'F') val += (*c - 'A') + 10;
			else throw std::runtime_error("Unicode escape contains invalid hex digit.");
			++c;
		}
		assert(val <= 0xffff);
		return val;
	};

	try {
		if (c == data.end() || *c != '"') throw std::runtime_error("String doesn't start with quote.");
		++c;
		while (c != data.end() && *c != '"') {
			if (*c == '\\') {
				++c;
				if (c == data.end()) throw std::runtime_error("End-of-string follows backslash.");
				if (*c == '"' || *c == '\\' || *c == '/') { *it = *c; ++it; ++c; }
				else if (*c == 'b') { *it = '\b'; ++it; ++c; }
				else if (*c == 'f') { *it = '\f'; ++it; ++c; }
				else if (*c == 'n') { *it = '\n'; ++it; ++c; }
				else if (*c == 'r') { *it = '\r'; ++it; ++c; }
				else if (*c == 't') { *it = '\t'; ++it; ++c; }
				else if (*c == 'u') {
					++c;
					uint32_t val = read_hex4();
	
					if ((val & 0xfc00) == 0xd800) {
						if (c == data.end() || *c != '\\') throw std::runtime_error("Missing backslash in second part of surrogate pair.");
						++c;
						if (c == data.end() || *c != 'u') throw std::runtime_error("Missing 'u' in second part of surrogate pair.");
						++c;
	
						uint32_t val2 = read_hex4();
						if ((val2 & 0xfc00) != 0xdc00) {
							throw std::runtime_error("Missing second half of surrogate pair.");
						}
						val = 0x01000 + ( ((val & 0x03ff) << 10) | (val2 & 0x03ff) );
						assert(val <= 0x10ffff);
					}
	
					if (val <= 0x7f) {
						*it = val; ++it;
					} else if (val <= 0x7ff) {
						*it = 0xC0 | (val >> 7); ++it;
						*it = 0x80 | (val & 0x3f); ++it;
					} else if (val <= 0xffff) {
						*it = 0xe0 | (val >> 12); ++it;
						*it = 0x80 | ((val >> 6) & 0x3f); ++it;
						*it = 0x80 | (val & 0x3f); ++it;
					} else if (val <= 0x10ffff) {
						*it = 0xf0 | ((val >> 18) & 0x7); ++it;
						*it = 0x80 | ((val >> 12) & 0x3f); ++it;
						*it = 0x80 | ((val >> 6) & 0x3f); ++it;
						*it = 0x80 | (val & 0x3f); ++it;
					} else {
						assert(0 && "will never decode a val this big");
					}
	
				}
			} else {
				*it = *c; ++it;
				++c;
			}
		}
		if (c == data.end() || *c != '"') throw std::runtime_error("String doesn't end with quote.");
		++c;
		if (c != data.end()) throw std::runtime_error("Trailing characters after string.");
	} catch (std::runtime_error const &e) {
		if (error) *error = e.what();
		return false;
	}
	return true;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x160, %rsp            # imm = 0x160
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq %rdx, -0x20(%rbp)
cmpq $0x0, -0x18(%rbp)
je 0x96a0
jmp 0x96bf
leaq 0xf1ff(%rip), %rdi      # 0x188a6
leaq 0xeb1e(%rip), %rsi      # 0x181cc
movl $0xfc, %edx
leaq 0xf1f1(%rip), %rcx      # 0x188ab
callq 0x4330
movq -0x18(%rbp), %rdi
callq 0x137a0
movq %rax, -0x28(%rbp)
movq -0x10(%rbp), %rdi
callq 0x4450
movq %rax, -0x30(%rbp)
leaq -0x30(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x10(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x10(%rbp), %rdi
callq 0x4770
movq %rax, -0x48(%rbp)
leaq -0x30(%rbp), %rdi
leaq -0x48(%rbp), %rsi
callq 0x16750
movb %al, %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, -0xb1(%rbp)
jne 0x972a
leaq -0x30(%rbp), %rdi
callq 0x13870
movsbl (%rax), %eax
cmpl $0x22, %eax
setne %al
movb %al, -0xb1(%rbp)
movb -0xb1(%rbp), %al
testb $0x1, %al
jne 0x9736
jmp 0x97a8
movl $0x10, %edi
callq 0x4250
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0xc0(%rbp)
leaq 0xf19c(%rip), %rsi      # 0x188f0
callq 0x41f0
jmp 0x975b
movq -0xc0(%rbp), %rdi
movq 0x1a887(%rip), %rsi     # 0x23ff0
movq 0x1a830(%rip), %rdx     # 0x23fa0
callq 0x46e0
jmp 0xa1ab
movq -0xc0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
callq 0x4390
jmp 0xa123
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
jmp 0xa123
leaq -0x30(%rbp), %rdi
callq 0x138d0
movq -0x10(%rbp), %rdi
callq 0x4770
movq %rax, -0x60(%rbp)
leaq -0x30(%rbp), %rdi
leaq -0x60(%rbp), %rsi
callq 0x13830
movb %al, %cl
xorl %eax, %eax
testb $0x1, %cl
movb %al, -0xc1(%rbp)
jne 0x97dc
jmp 0x97f4
leaq -0x30(%rbp), %rdi
callq 0x13870
movsbl (%rax), %eax
cmpl $0x22, %eax
setne %al
movb %al, -0xc1(%rbp)
movb -0xc1(%rbp), %al
testb $0x1, %al
jne 0x9803
jmp 0x9fe1
leaq -0x30(%rbp), %rdi
callq 0x13870
movsbl (%rax), %eax
cmpl $0x5c, %eax
jne 0x9fa0
leaq -0x30(%rbp), %rdi
callq 0x138d0
movq -0x10(%rbp), %rdi
callq 0x4770
movq %rax, -0x68(%rbp)
leaq -0x30(%rbp), %rdi
leaq -0x68(%rbp), %rsi
callq 0x16750
testb $0x1, %al
jne 0x9841
jmp 0x98a2
movl $0x10, %edi
callq 0x4250
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0xd0(%rbp)
leaq 0xf0b2(%rip), %rsi      # 0x18911
callq 0x41f0
jmp 0x9866
movq -0xd0(%rbp), %rdi
movq 0x1a77c(%rip), %rsi     # 0x23ff0
movq 0x1a725(%rip), %rdx     # 0x23fa0
callq 0x46e0
jmp 0xa1ab
movq -0xd0(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
callq 0x4390
jmp 0xa123
leaq -0x30(%rbp), %rdi
callq 0x13870
movsbl (%rax), %eax
cmpl $0x22, %eax
je 0x98d5
leaq -0x30(%rbp), %rdi
callq 0x13870
movsbl (%rax), %eax
cmpl $0x5c, %eax
je 0x98d5
leaq -0x30(%rbp), %rdi
callq 0x13870
movsbl (%rax), %eax
cmpl $0x2f, %eax
jne 0x9916
leaq -0x30(%rbp), %rdi
callq 0x13870
movq %rax, -0xd8(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x137d0
movq -0xd8(%rbp), %rsi
movq %rax, %rdi
callq 0x13890
jmp 0x98ff
leaq -0x28(%rbp), %rdi
callq 0x13820
leaq -0x30(%rbp), %rdi
callq 0x138d0
jmp 0x9f9e
leaq -0x30(%rbp), %rdi
callq 0x13870
movsbl (%rax), %eax
cmpl $0x62, %eax
jne 0x9959
movb $0x8, -0x69(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x137d0
movq %rax, %rdi
leaq -0x69(%rbp), %rsi
callq 0x137e0
jmp 0x9942
leaq -0x28(%rbp), %rdi
callq 0x13820
leaq -0x30(%rbp), %rdi
callq 0x138d0
jmp 0x9f9c
leaq -0x30(%rbp), %rdi
callq 0x13870
movsbl (%rax), %eax
cmpl $0x66, %eax
jne 0x999c
movb $0xc, -0x6a(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x137d0
movq %rax, %rdi
leaq -0x6a(%rbp), %rsi
callq 0x137e0
jmp 0x9985
leaq -0x28(%rbp), %rdi
callq 0x13820
leaq -0x30(%rbp), %rdi
callq 0x138d0
jmp 0x9f9a
leaq -0x30(%rbp), %rdi
callq 0x13870
movsbl (%rax), %eax
cmpl $0x6e, %eax
jne 0x99df
movb $0xa, -0x6b(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x137d0
movq %rax, %rdi
leaq -0x6b(%rbp), %rsi
callq 0x137e0
jmp 0x99c8
leaq -0x28(%rbp), %rdi
callq 0x13820
leaq -0x30(%rbp), %rdi
callq 0x138d0
jmp 0x9f98
leaq -0x30(%rbp), %rdi
callq 0x13870
movsbl (%rax), %eax
cmpl $0x72, %eax
jne 0x9a22
movb $0xd, -0x6c(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x137d0
movq %rax, %rdi
leaq -0x6c(%rbp), %rsi
callq 0x137e0
jmp 0x9a0b
leaq -0x28(%rbp), %rdi
callq 0x13820
leaq -0x30(%rbp), %rdi
callq 0x138d0
jmp 0x9f96
leaq -0x30(%rbp), %rdi
callq 0x13870
movsbl (%rax), %eax
cmpl $0x74, %eax
jne 0x9a65
movb $0x9, -0x6d(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x137d0
movq %rax, %rdi
leaq -0x6d(%rbp), %rsi
callq 0x137e0
jmp 0x9a4e
leaq -0x28(%rbp), %rdi
callq 0x13820
leaq -0x30(%rbp), %rdi
callq 0x138d0
jmp 0x9f94
leaq -0x30(%rbp), %rdi
callq 0x13870
movsbl (%rax), %eax
cmpl $0x75, %eax
jne 0x9f92
leaq -0x30(%rbp), %rdi
callq 0x138d0
leaq -0x40(%rbp), %rdi
callq 0xa1b0
movw %ax, -0xda(%rbp)
jmp 0x9a95
movw -0xda(%rbp), %ax
movzwl %ax, %eax
movl %eax, -0x74(%rbp)
movl -0x74(%rbp), %eax
andl $0xfc00, %eax           # imm = 0xFC00
cmpl $0xd800, %eax           # imm = 0xD800
jne 0x9d0b
movq -0x10(%rbp), %rdi
callq 0x4770
movq %rax, -0x80(%rbp)
leaq -0x30(%rbp), %rdi
leaq -0x80(%rbp), %rsi
callq 0x16750
movb %al, %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, -0xdb(%rbp)
jne 0x9af6
leaq -0x30(%rbp), %rdi
callq 0x13870
movsbl (%rax), %eax
cmpl $0x5c, %eax
setne %al
movb %al, -0xdb(%rbp)
movb -0xdb(%rbp), %al
testb $0x1, %al
jne 0x9b02
jmp 0x9b63
movl $0x10, %edi
callq 0x4250
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0xe8(%rbp)
leaq 0xee12(%rip), %rsi      # 0x18932
callq 0x41f0
jmp 0x9b27
movq -0xe8(%rbp), %rdi
movq 0x1a4bb(%rip), %rsi     # 0x23ff0
movq 0x1a464(%rip), %rdx     # 0x23fa0
callq 0x46e0
jmp 0xa1ab
movq -0xe8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
callq 0x4390
jmp 0xa123
leaq -0x30(%rbp), %rdi
callq 0x138d0
movq -0x10(%rbp), %rdi
callq 0x4770
movq %rax, -0x88(%rbp)
leaq -0x30(%rbp), %rdi
leaq -0x88(%rbp), %rsi
callq 0x16750
movb %al, %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, -0xe9(%rbp)
jne 0x9bb3
leaq -0x30(%rbp), %rdi
callq 0x13870
movsbl (%rax), %eax
cmpl $0x75, %eax
setne %al
movb %al, -0xe9(%rbp)
movb -0xe9(%rbp), %al
testb $0x1, %al
jne 0x9bbf
jmp 0x9c20
movl $0x10, %edi
callq 0x4250
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0xf8(%rbp)
leaq 0xed89(%rip), %rsi      # 0x18966
callq 0x41f0
jmp 0x9be4
movq -0xf8(%rbp), %rdi
movq 0x1a3fe(%rip), %rsi     # 0x23ff0
movq 0x1a3a7(%rip), %rdx     # 0x23fa0
callq 0x46e0
jmp 0xa1ab
movq -0xf8(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
callq 0x4390
jmp 0xa123
leaq -0x30(%rbp), %rdi
callq 0x138d0
leaq -0x40(%rbp), %rdi
callq 0xa1b0
movw %ax, -0xfa(%rbp)
jmp 0x9c3b
movw -0xfa(%rbp), %ax
movzwl %ax, %eax
movl %eax, -0x8c(%rbp)
movl -0x8c(%rbp), %eax
andl $0xfc00, %eax           # imm = 0xFC00
cmpl $0xdc00, %eax           # imm = 0xDC00
je 0x9cbe
movl $0x10, %edi
callq 0x4250
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x108(%rbp)
leaq 0xed19(%rip), %rsi      # 0x18994
callq 0x41f0
jmp 0x9c82
movq -0x108(%rbp), %rdi
movq 0x1a360(%rip), %rsi     # 0x23ff0
movq 0x1a309(%rip), %rdx     # 0x23fa0
callq 0x46e0
jmp 0xa1ab
movq -0x108(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
callq 0x4390
jmp 0xa123
movl -0x74(%rbp), %eax
andl $0x3ff, %eax            # imm = 0x3FF
shll $0xa, %eax
movl -0x8c(%rbp), %ecx
andl $0x3ff, %ecx            # imm = 0x3FF
orl %ecx, %eax
addl $0x1000, %eax           # imm = 0x1000
movl %eax, -0x74(%rbp)
cmpl $0x10ffff, -0x74(%rbp)  # imm = 0x10FFFF
ja 0x9cea
jmp 0x9d09
leaq 0xecca(%rip), %rdi      # 0x189bb
leaq 0xe4d4(%rip), %rsi      # 0x181cc
movl $0x12b, %edx            # imm = 0x12B
leaq 0xeba7(%rip), %rcx      # 0x188ab
callq 0x4330
jmp 0x9d0b
cmpl $0x7f, -0x74(%rbp)
ja 0x9d42
movb -0x74(%rbp), %al
movb %al, -0x8d(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x137d0
movq %rax, %rdi
leaq -0x8d(%rbp), %rsi
callq 0x137e0
jmp 0x9d34
leaq -0x28(%rbp), %rdi
callq 0x13820
jmp 0x9f90
cmpl $0x7ff, -0x74(%rbp)     # imm = 0x7FF
ja 0x9dbb
movl -0x74(%rbp), %eax
shrl $0x7, %eax
orb $-0x40, %al
movb %al, -0x8e(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x137d0
movq %rax, %rdi
leaq -0x8e(%rbp), %rsi
callq 0x137e0
jmp 0x9d73
leaq -0x28(%rbp), %rdi
movq %rdi, -0x110(%rbp)
callq 0x13820
movq -0x110(%rbp), %rdi
movb -0x74(%rbp), %al
andb $0x3f, %al
orb $-0x80, %al
movb %al, -0x8f(%rbp)
callq 0x137d0
movq %rax, %rdi
leaq -0x8f(%rbp), %rsi
callq 0x137e0
jmp 0x9dad
leaq -0x28(%rbp), %rdi
callq 0x13820
jmp 0x9f8e
cmpl $0xffff, -0x74(%rbp)    # imm = 0xFFFF
ja 0x9e75
movl -0x74(%rbp), %eax
shrl $0xc, %eax
orb $-0x20, %al
movb %al, -0x90(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x137d0
movq %rax, %rdi
leaq -0x90(%rbp), %rsi
callq 0x137e0
jmp 0x9df0
leaq -0x28(%rbp), %rdi
movq %rdi, -0x118(%rbp)
callq 0x13820
movq -0x118(%rbp), %rdi
movl -0x74(%rbp), %eax
shrl $0x6, %eax
andb $0x3f, %al
orb $-0x80, %al
movb %al, -0x91(%rbp)
callq 0x137d0
movq %rax, %rdi
leaq -0x91(%rbp), %rsi
callq 0x137e0
jmp 0x9e2d
leaq -0x28(%rbp), %rdi
movq %rdi, -0x120(%rbp)
callq 0x13820
movq -0x120(%rbp), %rdi
movb -0x74(%rbp), %al
andb $0x3f, %al
orb $-0x80, %al
movb %al, -0x92(%rbp)
callq 0x137d0
movq %rax, %rdi
leaq -0x92(%rbp), %rsi
callq 0x137e0
jmp 0x9e67
leaq -0x28(%rbp), %rdi
callq 0x13820
jmp 0x9f8c
cmpl $0x10ffff, -0x74(%rbp)  # imm = 0x10FFFF
ja 0x9f6b
movl -0x74(%rbp), %eax
shrl $0x12, %eax
andb $0x7, %al
orb $-0x10, %al
movb %al, -0x93(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x137d0
movq %rax, %rdi
leaq -0x93(%rbp), %rsi
callq 0x137e0
jmp 0x9eac
leaq -0x28(%rbp), %rdi
movq %rdi, -0x128(%rbp)
callq 0x13820
movq -0x128(%rbp), %rdi
movl -0x74(%rbp), %eax
shrl $0xc, %eax
andb $0x3f, %al
orb $-0x80, %al
movb %al, -0x94(%rbp)
callq 0x137d0
movq %rax, %rdi
leaq -0x94(%rbp), %rsi
callq 0x137e0
jmp 0x9ee9
leaq -0x28(%rbp), %rdi
movq %rdi, -0x130(%rbp)
callq 0x13820
movq -0x130(%rbp), %rdi
movl -0x74(%rbp), %eax
shrl $0x6, %eax
andb $0x3f, %al
orb $-0x80, %al
movb %al, -0x95(%rbp)
callq 0x137d0
movq %rax, %rdi
leaq -0x95(%rbp), %rsi
callq 0x137e0
jmp 0x9f26
leaq -0x28(%rbp), %rdi
movq %rdi, -0x138(%rbp)
callq 0x13820
movq -0x138(%rbp), %rdi
movb -0x74(%rbp), %al
andb $0x3f, %al
orb $-0x80, %al
movb %al, -0x96(%rbp)
callq 0x137d0
movq %rax, %rdi
leaq -0x96(%rbp), %rsi
callq 0x137e0
jmp 0x9f60
leaq -0x28(%rbp), %rdi
callq 0x13820
jmp 0x9f8a
leaq 0xea59(%rip), %rdi      # 0x189cb
leaq 0xe253(%rip), %rsi      # 0x181cc
movl $0x13d, %edx            # imm = 0x13D
leaq 0xe926(%rip), %rcx      # 0x188ab
callq 0x4330
jmp 0x9f8c
jmp 0x9f8e
jmp 0x9f90
jmp 0x9f92
jmp 0x9f94
jmp 0x9f96
jmp 0x9f98
jmp 0x9f9a
jmp 0x9f9c
jmp 0x9f9e
jmp 0x9fdc
leaq -0x30(%rbp), %rdi
callq 0x13870
movq %rax, -0x140(%rbp)
leaq -0x28(%rbp), %rdi
callq 0x137d0
movq -0x140(%rbp), %rsi
movq %rax, %rdi
callq 0x13890
jmp 0x9fca
leaq -0x28(%rbp), %rdi
callq 0x13820
leaq -0x30(%rbp), %rdi
callq 0x138d0
jmp 0x97b1
movq -0x10(%rbp), %rdi
callq 0x4770
movq %rax, -0xa0(%rbp)
leaq -0x30(%rbp), %rdi
leaq -0xa0(%rbp), %rsi
callq 0x16750
movb %al, %cl
movb $0x1, %al
testb $0x1, %cl
movb %al, -0x141(%rbp)
jne 0xa028
leaq -0x30(%rbp), %rdi
callq 0x13870
movsbl (%rax), %eax
cmpl $0x22, %eax
setne %al
movb %al, -0x141(%rbp)
movb -0x141(%rbp), %al
testb $0x1, %al
jne 0xa034
jmp 0xa095
movl $0x10, %edi
callq 0x4250
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x150(%rbp)
leaq 0xe9a1(%rip), %rsi      # 0x189f3
callq 0x41f0
jmp 0xa059
movq -0x150(%rbp), %rdi
movq 0x19f89(%rip), %rsi     # 0x23ff0
movq 0x19f32(%rip), %rdx     # 0x23fa0
callq 0x46e0
jmp 0xa1ab
movq -0x150(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
callq 0x4390
jmp 0xa123
leaq -0x30(%rbp), %rdi
callq 0x138d0
movq -0x10(%rbp), %rdi
callq 0x4770
movq %rax, -0xa8(%rbp)
leaq -0x30(%rbp), %rdi
leaq -0xa8(%rbp), %rsi
callq 0x13830
testb $0x1, %al
jne 0xa0c7
jmp 0xa166
movl $0x10, %edi
callq 0x4250
movq %rax, %rdi
movq %rdi, %rax
movq %rax, -0x158(%rbp)
leaq 0xe92d(%rip), %rsi      # 0x18a12
callq 0x41f0
jmp 0xa0ec
movq -0x158(%rbp), %rdi
movq 0x19ef6(%rip), %rsi     # 0x23ff0
movq 0x19e9f(%rip), %rdx     # 0x23fa0
callq 0x46e0
jmp 0xa1ab
movq -0x158(%rbp), %rdi
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
callq 0x4390
movl -0x54(%rbp), %eax
movl $0x1, %ecx
cmpl %ecx, %eax
jne 0xa19a
movq -0x50(%rbp), %rdi
callq 0x4200
movq %rax, -0xb0(%rbp)
cmpq $0x0, -0x20(%rbp)
je 0xa17b
movq -0xb0(%rbp), %rdi
movq (%rdi), %rax
movq 0x10(%rax), %rax
callq *%rax
movq %rax, %rsi
movq -0x20(%rbp), %rdi
callq 0x45e0
jmp 0xa164
jmp 0xa17b
jmp 0xa188
movq %rax, %rcx
movl %edx, %eax
movq %rcx, -0x50(%rbp)
movl %eax, -0x54(%rbp)
callq 0x46a0
jmp 0xa186
movb $0x0, -0x1(%rbp)
callq 0x46a0
jmp 0xa18c
jmp 0xa19a
movb $0x1, -0x1(%rbp)
movb -0x1(%rbp), %al
andb $0x1, %al
addq $0x160, %rsp            # imm = 0x160
popq %rbp
retq
movq -0x50(%rbp), %rdi
callq 0x4710
movq %rax, %rdi
callq 0x5490
nopl (%rax,%rax)