// File: /workspace/github_c_makefile_star2_O0/jfriesse[P]omping/cli.c
// Function: cli_parse
int
cli_parse(int argc, char * const argv[], struct omping_instance *instance)
{
	struct ai_item *ai_item;
	struct ifaddrs *ifa_list, *ifa_local;
	char *ep;
	char *mcast_addr_s;
	const char *port_s;
	double numd;
	int ch;
	int force;
	int no_ai;
	int num;
	int res;
	int rate_limit_time_set;
	int show_ver;
	int wait_for_finish_time_set;
	unsigned int ifa_flags;

	instance->auto_exit = 1;
	instance->cont_stat = 0;
	instance->dup_buf_items = MIN_DUP_BUF_ITEMS;
	instance->ip_ver = 0;
	instance->local_ifname = NULL;
	mcast_addr_s = NULL;
	instance->op_mode = OMPING_OP_MODE_NORMAL;
	instance->quiet = 0;
	instance->send_count_queries = 0;
	instance->sndbuf_size = 0;
	instance->single_addr = 0;
	instance->rate_limit_time = 0;
	instance->rcvbuf_size = 0;
	instance->timeout_time = 0;
	instance->ttl = DEFAULT_TTL;
	instance->transport_method = SF_TM_ASM;
	instance->wait_time = DEFAULT_WAIT_TIME;
	instance->wait_for_finish_time = 0;

	force = 0;
	ifa_flags = IFF_MULTICAST;
	port_s = DEFAULT_PORT_S;
	rate_limit_time_set = 0;
	show_ver = 0;
	wait_for_finish_time_set = 0;

	logging_set_verbose(0);

	while ((ch = getopt(argc, argv, "46CDEFqVvc:i:M:m:O:p:R:r:S:T:t:w:")) != -1) {
		switch (ch) {
		case '4':
			instance->ip_ver = 4;
			break;
		case '6':
			instance->ip_ver = 6;
			break;
		case 'C':
			instance->cont_stat++;
			break;
		case 'D':
			instance->dup_buf_items = 0;
			break;
		case 'E':
			instance->auto_exit = 0;
			break;
		case 'F':
			force++;
			break;
		case 'q':
			instance->quiet++;
			break;
		case 'V':
			show_ver++;
			break;
		case 'v':
			logging_set_verbose(logging_get_verbose() + 1);
			break;
		case 'c':
			numd = strtod(optarg, &ep);
			if (numd < 1 || *ep != '\0' || (uint64_t)numd >= ((uint64_t)~0)) {
				warnx("illegal number, -c argument -- %s", optarg);
				goto error_usage_exit;
			}
			instance->send_count_queries= (uint64_t)numd;
			break;
		case 'i':
			numd = strtod(optarg, &ep);
			if (numd < 0 || *ep != '\0' || numd * 1000 > INT32_MAX) {
				warnx("illegal number, -i argument -- %s", optarg);
				goto error_usage_exit;
			}
			instance->wait_time = (int)(numd * 1000.0);
			break;
		case 'M':
			if (strcmp(optarg, "asm") == 0) {
				instance->transport_method = SF_TM_ASM;
				ifa_flags = IFF_MULTICAST;
			} else if (strcmp(optarg, "ssm") == 0 && sf_is_ssm_supported()) {
				instance->transport_method = SF_TM_SSM;
				ifa_flags = IFF_MULTICAST;
			} else if (strcmp(optarg, "ipbc") == 0 && sf_is_ipbc_supported()) {
				instance->transport_method = SF_TM_IPBC;
				ifa_flags = IFF_BROADCAST;
			} else {
				warnx("illegal parameter, -M argument -- %s", optarg);
				goto error_usage_exit;
			}
			break;
		case 'm':
			mcast_addr_s = optarg;
			break;
		case 'O':
			if (strcmp(optarg, "normal") == 0) {
				instance->op_mode = OMPING_OP_MODE_NORMAL;
			/*
			 * Temporarily disabled
			 *
			} else if (strcmp(optarg, "server") == 0) {
				*op_mode = OMPING_OP_MODE_SERVER;
			*/
			} else if (strcmp(optarg, "client") == 0) {
				instance->op_mode = OMPING_OP_MODE_CLIENT;
			} else {
				warnx("illegal parameter, -O argument -- %s", optarg);
				goto error_usage_exit;
			}
			break;
		case 'p':
			port_s = optarg;
			break;
		case 'R':
			numd = strtod(optarg, &ep);
			if (numd < MIN_RCVBUF_SIZE || *ep != '\0' || numd > INT32_MAX) {
				warnx("illegal number, -R argument -- %s", optarg);
				goto error_usage_exit;
			}
			instance->rcvbuf_size = (int)numd;
			break;
		case 'r':
			numd = strtod(optarg, &ep);
			if (numd < 0 || *ep != '\0' || numd * 1000 > INT32_MAX) {
				warnx("illegal number, -r argument -- %s", optarg);
				goto error_usage_exit;
			}
			instance->rate_limit_time = (int)(numd * 1000.0);
			rate_limit_time_set = 1;
			break;
		case 'S':
			numd = strtod(optarg, &ep);
			if (numd < MIN_SNDBUF_SIZE || *ep != '\0' || numd > INT32_MAX) {
				warnx("illegal number, -S argument -- %s", optarg);
				goto error_usage_exit;
			}
			instance->sndbuf_size = (int)numd;
			break;
		case 't':
			num = strtol(optarg, &ep, 10);
			if (num <= 0 || num > ((uint8_t)~0) || *ep != '\0') {
				warnx("illegal number, -t argument -- %s", optarg);
				goto error_usage_exit;
			}
			instance->ttl = num;
			break;
		case 'T':
			numd = strtod(optarg, &ep);
			if (numd < 0 || *ep != '\0' || numd * 1000 > INT32_MAX) {
				warnx("illegal number, -T argument -- %s", optarg);
				goto error_usage_exit;
			}
			instance->timeout_time = (int)(numd * 1000.0);
			break;
		case 'w':
			numd = strtod(optarg, &ep);
			if ((numd < 0 && numd != -1) || *ep != '\0' || numd * 1000 > INT32_MAX) {
				warnx("illegal number, -w argument -- %s", optarg);
				goto error_usage_exit;
			}
			wait_for_finish_time_set = 1;
			instance->wait_for_finish_time = (int)(numd * 1000.0);
			break;
		case '?':
			goto error_usage_exit;
			/* NOTREACHED */
			break;

		}
	}

	argc -= optind;
	argv += optind;

	/*
	 * Param checking
	 */
	if (show_ver == 1) {
		cliprint_version();
		exit(0);
	}

	if (show_ver > 1) {
		if (instance->op_mode != OMPING_OP_MODE_NORMAL) {
			warnx("op_mode must be set to normal for remote version display.");
			goto error_usage_exit;
		}

		instance->op_mode = OMPING_OP_MODE_SHOW_VERSION;
	}

	if (force < 1) {
		if (instance->wait_time < DEFAULT_WAIT_TIME) {
			warnx("illegal nmber, -i argument %u ms < %u ms. Use -F to force.",
			    instance->wait_time, DEFAULT_WAIT_TIME);
			goto error_usage_exit;
		}

		if (instance->ttl < DEFAULT_TTL) {
			warnx("illegal nmber, -t argument %u < %u. Use -F to force.",
			    instance->ttl, DEFAULT_TTL);
			goto error_usage_exit;
		}
	}

	if (force < 2) {
		if (instance->wait_time == 0) {
			warnx("illegal nmber, -i argument %u ms < 1 ms. Use -FF to force.",
			    instance->wait_time);
			goto error_usage_exit;
		}
	}

	if (instance->transport_method == SF_TM_IPBC) {
		if (instance->ip_ver == 6) {
			warnx("illegal transport method, -M argument ipbc is mutually exclusive "
			    "with -6 option");
			goto error_usage_exit;
		}

		instance->ip_ver = 4;
	}

	/*
	 * Computed params
	 */
	if (!wait_for_finish_time_set) {
		instance->wait_for_finish_time = instance->wait_time * DEFAULT_WFF_TIME_MUL;
		if (instance->wait_for_finish_time < DEFAULT_WAIT_TIME) {
			instance->wait_for_finish_time = DEFAULT_WAIT_TIME;
		}
	}

	if (instance->wait_time == 0) {
		instance->dup_buf_items = 0;
	} else {
		/*
		 * + 1 is for eliminate trucate errors
		 */
		instance->dup_buf_items = ((DUP_BUF_SECS * 1000) / instance->wait_time) + 1;

		if (instance->dup_buf_items < MIN_DUP_BUF_ITEMS) {
			instance->dup_buf_items = MIN_DUP_BUF_ITEMS;
		}
	}

	if (!rate_limit_time_set) {
		instance->rate_limit_time = instance->wait_time;

	}

	TAILQ_INIT(&instance->remote_addrs);

	no_ai = aii_parse_remote_addrs(&instance->remote_addrs, argc, argv, port_s,
	    instance->ip_ver);
	if (no_ai < 1) {
		warnx("at least one remote addresses should be specified");
		goto error_usage_exit;
	}

	instance->ip_ver = aii_return_ip_ver(&instance->remote_addrs, instance->ip_ver,
	    mcast_addr_s, port_s);

	if (aii_find_local(&instance->remote_addrs, &instance->ip_ver, &ifa_list, &ifa_local,
	    &ai_item, ifa_flags) < 0) {
		errx(1, "Can't find local address in arguments");
	}

	/*
	 * Change aii_list to struct of sockaddr_storage(s)
	 */
	aii_list_ai_to_sa(&instance->remote_addrs, instance->ip_ver);

	/*
	 * Find local addr and copy that. Also remove that from list
	 */
	aii_ifa_local_to_ai(&instance->remote_addrs, ai_item, ifa_local, instance->ip_ver,
	    &instance->local_addr, &instance->single_addr);

	/*
	 * Store local ifname
	 */
	instance->local_ifname = strdup(ifa_local->ifa_name);
	if (instance->local_ifname == NULL) {
		errx(1, "Can't alloc memory");
	}

	switch (instance->transport_method) {
	case SF_TM_ASM:
	case SF_TM_SSM:
		/*
		 * Convert mcast addr to something useful
		 */
		aii_mcast_to_ai(instance->ip_ver, &instance->mcast_addr, mcast_addr_s, port_s);
		break;
	case SF_TM_IPBC:
		/*
		 * Convert broadcast addr to something useful
		 */
		res = aii_ipbc_to_ai(&instance->mcast_addr, mcast_addr_s, port_s, ifa_local);
		if (res == -1) {
			warnx("illegal broadcast address, -M argument doesn't match with local"
			    " broadcast address");
			goto error_usage_exit;
		}
		break;
	}

	/*
	 * Assign port from mcast_addr
	 */
	instance->port = af_sa_port(AF_CAST_SA(&instance->mcast_addr.sas));

	freeifaddrs(ifa_list);

	return (0);

error_usage_exit:
	cliprint_usage();
	exit(1);
	/* NOTREACHED */
	return (-1);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x90, %rsp
movl %edi, -0x4(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq -0x18(%rbp), %rax
movl $0x1, 0x168(%rax)
movq -0x18(%rbp), %rax
movl $0x0, 0x16c(%rax)
movq -0x18(%rbp), %rax
movl $0x400, 0x170(%rax)     # imm = 0x400
movq -0x18(%rbp), %rax
movl $0x0, 0x178(%rax)
movq -0x18(%rbp), %rax
movq $0x0, 0x158(%rax)
movq $0x0, -0x40(%rbp)
movq -0x18(%rbp), %rax
movl $0x0, 0x150(%rax)
movq -0x18(%rbp), %rax
movl $0x0, 0x180(%rax)
movq -0x18(%rbp), %rax
movq $0x0, 0x160(%rax)
movq -0x18(%rbp), %rax
movl $0x0, 0x190(%rax)
movq -0x18(%rbp), %rax
movl $0x0, 0x18c(%rax)
movq -0x18(%rbp), %rax
movl $0x0, 0x184(%rax)
movq -0x18(%rbp), %rax
movl $0x0, 0x188(%rax)
movq -0x18(%rbp), %rax
movl $0x0, 0x194(%rax)
movq -0x18(%rbp), %rax
movb $0x40, 0x1aa(%rax)
movq -0x18(%rbp), %rax
movl $0x0, 0x154(%rax)
movq -0x18(%rbp), %rax
movl $0x3e8, 0x1a0(%rax)     # imm = 0x3E8
movq -0x18(%rbp), %rax
movl $0x0, 0x19c(%rax)
movl $0x0, -0x58(%rbp)
movl $0x1000, -0x74(%rbp)    # imm = 0x1000
leaq 0xa098(%rip), %rax      # 0xe688
movq %rax, -0x48(%rbp)
movl $0x0, -0x68(%rbp)
movl $0x0, -0x6c(%rbp)
movl $0x0, -0x70(%rbp)
xorl %edi, %edi
callq 0x5ed0
movl -0x4(%rbp), %edi
movq -0x10(%rbp), %rsi
leaq 0xa06f(%rip), %rdx      # 0xe68d
callq 0x22c0
movl %eax, -0x54(%rbp)
cmpl $-0x1, %eax
je 0x4cca
movl -0x54(%rbp), %eax
addl $-0x34, %eax
movl %eax, %ecx
movq %rcx, -0x80(%rbp)
subl $0x43, %eax
ja 0x4cc5
movq -0x80(%rbp), %rax
leaq 0x9f29(%rip), %rcx      # 0xe578
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movq -0x18(%rbp), %rax
movl $0x4, 0x178(%rax)
jmp 0x4cc5
movq -0x18(%rbp), %rax
movl $0x6, 0x178(%rax)
jmp 0x4cc5
movq -0x18(%rbp), %rax
movl 0x16c(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x16c(%rax)
jmp 0x4cc5
movq -0x18(%rbp), %rax
movl $0x0, 0x170(%rax)
jmp 0x4cc5
movq -0x18(%rbp), %rax
movl $0x0, 0x168(%rax)
jmp 0x4cc5
movl -0x58(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x58(%rbp)
jmp 0x4cc5
movq -0x18(%rbp), %rax
movl 0x180(%rax), %ecx
addl $0x1, %ecx
movl %ecx, 0x180(%rax)
jmp 0x4cc5
movl -0x6c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x6c(%rbp)
jmp 0x4cc5
callq 0x5ca0
movl %eax, %edi
addl $0x1, %edi
callq 0x5ed0
jmp 0x4cc5
movq 0xe8cd(%rip), %rax      # 0x12fd8
movq (%rax), %rdi
leaq -0x38(%rbp), %rsi
callq 0x2090
movsd %xmm0, -0x50(%rbp)
movsd 0x9e44(%rip), %xmm0     # 0xe568
ucomisd -0x50(%rbp), %xmm0
ja 0x4768
movq -0x38(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
jne 0x4768
movsd -0x50(%rbp), %xmm0
movsd 0x9e2c(%rip), %xmm2     # 0xe570
movaps %xmm0, %xmm1
subsd %xmm2, %xmm1
cvttsd2si %xmm1, %rcx
cvttsd2si %xmm0, %rax
movq %rax, %rdx
sarq $0x3f, %rdx
andq %rdx, %rcx
orq %rcx, %rax
cmpq $-0x1, %rax
jb 0x4785
movq 0xe869(%rip), %rax      # 0x12fd8
movq (%rax), %rsi
leaq 0x9f36(%rip), %rdi      # 0xe6af
movb $0x0, %al
callq 0x2100
jmp 0x50d9
movsd -0x50(%rbp), %xmm0
movsd 0x9dde(%rip), %xmm2     # 0xe570
movaps %xmm0, %xmm1
subsd %xmm2, %xmm1
cvttsd2si %xmm1, %rax
cvttsd2si %xmm0, %rcx
movq %rcx, %rdx
sarq $0x3f, %rdx
andq %rdx, %rax
orq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x160(%rax)
jmp 0x4cc5
movq 0xe811(%rip), %rax      # 0x12fd8
movq (%rax), %rdi
leaq -0x38(%rbp), %rsi
callq 0x2090
movsd %xmm0, -0x50(%rbp)
xorps %xmm0, %xmm0
ucomisd -0x50(%rbp), %xmm0
ja 0x4809
movq -0x38(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
jne 0x4809
movsd 0x9d62(%rip), %xmm0     # 0xe558
mulsd -0x50(%rbp), %xmm0
movsd 0x9d4d(%rip), %xmm1     # 0xe550
ucomisd %xmm1, %xmm0
jbe 0x4826
movq 0xe7c8(%rip), %rax      # 0x12fd8
movq (%rax), %rsi
leaq 0x9eb7(%rip), %rdi      # 0xe6d1
movb $0x0, %al
callq 0x2100
jmp 0x50d9
movsd 0x9d2a(%rip), %xmm0     # 0xe558
mulsd -0x50(%rbp), %xmm0
cvttsd2si %xmm0, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x1a0(%rax)
jmp 0x4cc5
movq 0xe78b(%rip), %rax      # 0x12fd8
movq (%rax), %rdi
leaq 0x9e9c(%rip), %rsi      # 0xe6f3
callq 0x21a0
cmpl $0x0, %eax
jne 0x487b
movq -0x18(%rbp), %rax
movl $0x0, 0x154(%rax)
movl $0x1000, -0x74(%rbp)    # imm = 0x1000
jmp 0x4914
movq 0xe756(%rip), %rax      # 0x12fd8
movq (%rax), %rdi
leaq 0x9e6b(%rip), %rsi      # 0xe6f7
callq 0x21a0
cmpl $0x0, %eax
jne 0x48b7
callq 0xb880
cmpl $0x0, %eax
je 0x48b7
movq -0x18(%rbp), %rax
movl $0x1, 0x154(%rax)
movl $0x1000, -0x74(%rbp)    # imm = 0x1000
jmp 0x4912
movq 0xe71a(%rip), %rax      # 0x12fd8
movq (%rax), %rdi
leaq 0x9e33(%rip), %rsi      # 0xe6fb
callq 0x21a0
cmpl $0x0, %eax
jne 0x48f3
callq 0xb870
cmpl $0x0, %eax
je 0x48f3
movq -0x18(%rbp), %rax
movl $0x2, 0x154(%rax)
movl $0x2, -0x74(%rbp)
jmp 0x4910
movq 0xe6de(%rip), %rax      # 0x12fd8
movq (%rax), %rsi
leaq 0x9dfc(%rip), %rdi      # 0xe700
movb $0x0, %al
callq 0x2100
jmp 0x50d9
jmp 0x4912
jmp 0x4914
jmp 0x4cc5
movq 0xe6b8(%rip), %rax      # 0x12fd8
movq (%rax), %rax
movq %rax, -0x40(%rbp)
jmp 0x4cc5
movq 0xe6a5(%rip), %rax      # 0x12fd8
movq (%rax), %rdi
leaq 0x9de8(%rip), %rsi      # 0xe725
callq 0x21a0
cmpl $0x0, %eax
jne 0x4957
movq -0x18(%rbp), %rax
movl $0x0, 0x150(%rax)
jmp 0x49a1
movq 0xe67a(%rip), %rax      # 0x12fd8
movq (%rax), %rdi
leaq 0x9dc4(%rip), %rsi      # 0xe72c
callq 0x21a0
cmpl $0x0, %eax
jne 0x4982
movq -0x18(%rbp), %rax
movl $0x1, 0x150(%rax)
jmp 0x499f
movq 0xe64f(%rip), %rax      # 0x12fd8
movq (%rax), %rsi
leaq 0x9da0(%rip), %rdi      # 0xe733
movb $0x0, %al
callq 0x2100
jmp 0x50d9
jmp 0x49a1
jmp 0x4cc5
movq 0xe62b(%rip), %rax      # 0x12fd8
movq (%rax), %rax
movq %rax, -0x48(%rbp)
jmp 0x4cc5
movq 0xe618(%rip), %rax      # 0x12fd8
movq (%rax), %rdi
leaq -0x38(%rbp), %rsi
callq 0x2090
movsd %xmm0, -0x50(%rbp)
movsd 0x9b87(%rip), %xmm0     # 0xe560
ucomisd -0x50(%rbp), %xmm0
ja 0x49ff
movq -0x38(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
jne 0x49ff
movsd -0x50(%rbp), %xmm0
movsd 0x9b57(%rip), %xmm1     # 0xe550
ucomisd %xmm1, %xmm0
jbe 0x4a1c
movq 0xe5d2(%rip), %rax      # 0x12fd8
movq (%rax), %rsi
leaq 0x9d48(%rip), %rdi      # 0xe758
movb $0x0, %al
callq 0x2100
jmp 0x50d9
cvttsd2si -0x50(%rbp), %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x188(%rax)
jmp 0x4cc5
movq 0xe5a1(%rip), %rax      # 0x12fd8
movq (%rax), %rdi
leaq -0x38(%rbp), %rsi
callq 0x2090
movsd %xmm0, -0x50(%rbp)
xorps %xmm0, %xmm0
ucomisd -0x50(%rbp), %xmm0
ja 0x4a79
movq -0x38(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
jne 0x4a79
movsd 0x9af2(%rip), %xmm0     # 0xe558
mulsd -0x50(%rbp), %xmm0
movsd 0x9add(%rip), %xmm1     # 0xe550
ucomisd %xmm1, %xmm0
jbe 0x4a96
movq 0xe558(%rip), %rax      # 0x12fd8
movq (%rax), %rsi
leaq 0x9cf0(%rip), %rdi      # 0xe77a
movb $0x0, %al
callq 0x2100
jmp 0x50d9
movsd 0x9aba(%rip), %xmm0     # 0xe558
mulsd -0x50(%rbp), %xmm0
cvttsd2si %xmm0, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x184(%rax)
movl $0x1, -0x68(%rbp)
jmp 0x4cc5
movq 0xe514(%rip), %rax      # 0x12fd8
movq (%rax), %rdi
leaq -0x38(%rbp), %rsi
callq 0x2090
movsd %xmm0, -0x50(%rbp)
movsd 0x9a83(%rip), %xmm0     # 0xe560
ucomisd -0x50(%rbp), %xmm0
ja 0x4b03
movq -0x38(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
jne 0x4b03
movsd -0x50(%rbp), %xmm0
movsd 0x9a53(%rip), %xmm1     # 0xe550
ucomisd %xmm1, %xmm0
jbe 0x4b20
movq 0xe4ce(%rip), %rax      # 0x12fd8
movq (%rax), %rsi
leaq 0x9c88(%rip), %rdi      # 0xe79c
movb $0x0, %al
callq 0x2100
jmp 0x50d9
cvttsd2si -0x50(%rbp), %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x190(%rax)
jmp 0x4cc5
movq 0xe49d(%rip), %rax      # 0x12fd8
movq (%rax), %rdi
leaq -0x38(%rbp), %rsi
movl $0xa, %edx
callq 0x21f0
movl %eax, -0x60(%rbp)
cmpl $0x0, -0x60(%rbp)
jle 0x4b6a
cmpl $0xff, -0x60(%rbp)
jg 0x4b6a
movq -0x38(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
je 0x4b87
movq 0xe467(%rip), %rax      # 0x12fd8
movq (%rax), %rsi
leaq 0x9c43(%rip), %rdi      # 0xe7be
movb $0x0, %al
callq 0x2100
jmp 0x50d9
movl -0x60(%rbp), %eax
movb %al, %cl
movq -0x18(%rbp), %rax
movb %cl, 0x1aa(%rax)
jmp 0x4cc5
movq 0xe436(%rip), %rax      # 0x12fd8
movq (%rax), %rdi
leaq -0x38(%rbp), %rsi
callq 0x2090
movsd %xmm0, -0x50(%rbp)
xorps %xmm0, %xmm0
ucomisd -0x50(%rbp), %xmm0
ja 0x4be4
movq -0x38(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
jne 0x4be4
movsd 0x9987(%rip), %xmm0     # 0xe558
mulsd -0x50(%rbp), %xmm0
movsd 0x9972(%rip), %xmm1     # 0xe550
ucomisd %xmm1, %xmm0
jbe 0x4c01
movq 0xe3ed(%rip), %rax      # 0x12fd8
movq (%rax), %rsi
leaq 0x9beb(%rip), %rdi      # 0xe7e0
movb $0x0, %al
callq 0x2100
jmp 0x50d9
movsd 0x994f(%rip), %xmm0     # 0xe558
mulsd -0x50(%rbp), %xmm0
cvttsd2si %xmm0, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x194(%rax)
jmp 0x4cc5
movq 0xe3b0(%rip), %rax      # 0x12fd8
movq (%rax), %rdi
leaq -0x38(%rbp), %rsi
callq 0x2090
movsd %xmm0, -0x50(%rbp)
xorps %xmm0, %xmm0
ucomisd -0x50(%rbp), %xmm0
jbe 0x4c58
movsd -0x50(%rbp), %xmm0
movsd 0x98f8(%rip), %xmm1     # 0xe548
ucomisd %xmm1, %xmm0
jne 0x4c7f
jp 0x4c7f
movq -0x38(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
jne 0x4c7f
movsd 0x98ec(%rip), %xmm0     # 0xe558
mulsd -0x50(%rbp), %xmm0
movsd 0x98d7(%rip), %xmm1     # 0xe550
ucomisd %xmm1, %xmm0
jbe 0x4c9c
movq 0xe352(%rip), %rax      # 0x12fd8
movq (%rax), %rsi
leaq 0x9b72(%rip), %rdi      # 0xe802
movb $0x0, %al
callq 0x2100
jmp 0x50d9
movl $0x1, -0x70(%rbp)
movsd 0x98ad(%rip), %xmm0     # 0xe558
mulsd -0x50(%rbp), %xmm0
cvttsd2si %xmm0, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x19c(%rax)
jmp 0x4cc5
jmp 0x50d9
jmp 0x4610
movq 0xe2ff(%rip), %rax      # 0x12fd0
movl (%rax), %ecx
movl -0x4(%rbp), %eax
subl %ecx, %eax
movl %eax, -0x4(%rbp)
movq 0xe2ee(%rip), %rax      # 0x12fd0
movl (%rax), %ecx
movq -0x10(%rbp), %rax
movslq %ecx, %rcx
shlq $0x3, %rcx
addq %rcx, %rax
movq %rax, -0x10(%rbp)
cmpl $0x1, -0x6c(%rbp)
jne 0x4d08
callq 0x5910
xorl %edi, %edi
callq 0x22f0
cmpl $0x1, -0x6c(%rbp)
jle 0x4d3c
movq -0x18(%rbp), %rax
cmpl $0x0, 0x150(%rax)
je 0x4d2e
leaq 0x9b02(%rip), %rdi      # 0xe824
movb $0x0, %al
callq 0x2100
jmp 0x50d9
movq -0x18(%rbp), %rax
movl $0x3, 0x150(%rax)
cmpl $0x1, -0x58(%rbp)
jge 0x4da9
movq -0x18(%rbp), %rax
cmpl $0x3e8, 0x1a0(%rax)     # imm = 0x3E8
jge 0x4d74
movq -0x18(%rbp), %rax
movl 0x1a0(%rax), %esi
leaq 0x9afb(%rip), %rdi      # 0xe85e
movl $0x3e8, %edx            # imm = 0x3E8
movb $0x0, %al
callq 0x2100
jmp 0x50d9
movq -0x18(%rbp), %rax
movzbl 0x1aa(%rax), %eax
cmpl $0x40, %eax
jge 0x4da7
movq -0x18(%rbp), %rax
movzbl 0x1aa(%rax), %esi
leaq 0x9b03(%rip), %rdi      # 0xe899
movl $0x40, %edx
movb $0x0, %al
callq 0x2100
jmp 0x50d9
jmp 0x4da9
cmpl $0x2, -0x58(%rbp)
jge 0x4ddb
movq -0x18(%rbp), %rax
cmpl $0x0, 0x1a0(%rax)
jne 0x4dd9
movq -0x18(%rbp), %rax
movl 0x1a0(%rax), %esi
leaq 0x9b01(%rip), %rdi      # 0xe8ce
movb $0x0, %al
callq 0x2100
jmp 0x50d9
jmp 0x4ddb
movq -0x18(%rbp), %rax
cmpl $0x2, 0x154(%rax)
jne 0x4e16
movq -0x18(%rbp), %rax
cmpl $0x6, 0x178(%rax)
jne 0x4e08
leaq 0x9b0d(%rip), %rdi      # 0xe909
movb $0x0, %al
callq 0x2100
jmp 0x50d9
movq -0x18(%rbp), %rax
movl $0x4, 0x178(%rax)
cmpl $0x0, -0x70(%rbp)
jne 0x4e51
movq -0x18(%rbp), %rax
imull $0x3, 0x1a0(%rax), %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x19c(%rax)
movq -0x18(%rbp), %rax
cmpl $0x3e8, 0x19c(%rax)     # imm = 0x3E8
jge 0x4e4f
movq -0x18(%rbp), %rax
movl $0x3e8, 0x19c(%rax)     # imm = 0x3E8
jmp 0x4e51
movq -0x18(%rbp), %rax
cmpl $0x0, 0x1a0(%rax)
jne 0x4e6e
movq -0x18(%rbp), %rax
movl $0x0, 0x170(%rax)
jmp 0x4ead
movq -0x18(%rbp), %rcx
movl $0x1d4c0, %eax          # imm = 0x1D4C0
cltd
idivl 0x1a0(%rcx)
movl %eax, %ecx
addl $0x1, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x170(%rax)
movq -0x18(%rbp), %rax
cmpl $0x400, 0x170(%rax)     # imm = 0x400
jge 0x4eab
movq -0x18(%rbp), %rax
movl $0x400, 0x170(%rax)     # imm = 0x400
jmp 0x4ead
cmpl $0x0, -0x68(%rbp)
jne 0x4ec7
movq -0x18(%rbp), %rax
movl 0x1a0(%rax), %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x184(%rax)
jmp 0x4ec9
movq -0x18(%rbp), %rax
movq $0x0, 0x140(%rax)
movq -0x18(%rbp), %rcx
addq $0x140, %rcx            # imm = 0x140
movq -0x18(%rbp), %rax
movq %rcx, 0x148(%rax)
movq -0x18(%rbp), %rdi
addq $0x140, %rdi            # imm = 0x140
movl -0x4(%rbp), %esi
movq -0x10(%rbp), %rdx
movq -0x48(%rbp), %rcx
movq -0x18(%rbp), %rax
movl 0x178(%rax), %r8d
callq 0x3f80
movl %eax, -0x5c(%rbp)
cmpl $0x1, -0x5c(%rbp)
jge 0x4f30
leaq 0x9a35(%rip), %rdi      # 0xe959
movb $0x0, %al
callq 0x2100
jmp 0x50d9
movq -0x18(%rbp), %rdi
addq $0x140, %rdi            # imm = 0x140
movq -0x18(%rbp), %rax
movl 0x178(%rax), %esi
movq -0x40(%rbp), %rdx
movq -0x48(%rbp), %rcx
callq 0x4140
movl %eax, %ecx
movq -0x18(%rbp), %rax
movl %ecx, 0x178(%rax)
movq -0x18(%rbp), %rdi
addq $0x140, %rdi            # imm = 0x140
movq -0x18(%rbp), %rsi
addq $0x178, %rsi            # imm = 0x178
movl -0x74(%rbp), %r9d
leaq -0x28(%rbp), %rdx
leaq -0x30(%rbp), %rcx
leaq -0x20(%rbp), %r8
callq 0x3630
cmpl $0x0, %eax
jge 0x4fa1
movl $0x1, %edi
leaq 0x99f1(%rip), %rsi      # 0xe98b
movb $0x0, %al
callq 0x20d0
movq -0x18(%rbp), %rdi
addq $0x140, %rdi            # imm = 0x140
movq -0x18(%rbp), %rax
movl 0x178(%rax), %esi
callq 0x3480
movq -0x18(%rbp), %rdi
addq $0x140, %rdi            # imm = 0x140
movq -0x20(%rbp), %rsi
movq -0x30(%rbp), %rdx
movq -0x18(%rbp), %rax
movl 0x178(%rax), %ecx
movq -0x18(%rbp), %r8
movq -0x18(%rbp), %r9
addq $0x18c, %r9             # imm = 0x18C
callq 0x3990
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x2330
movq %rax, %rcx
movq -0x18(%rbp), %rax
movq %rcx, 0x158(%rax)
movq -0x18(%rbp), %rax
cmpq $0x0, 0x158(%rax)
jne 0x5028
movl $0x1, %edi
leaq 0x91b3(%rip), %rsi      # 0xe1d4
movb $0x0, %al
callq 0x20d0
movq -0x18(%rbp), %rax
movl 0x154(%rax), %eax
movl %eax, -0x84(%rbp)
subl $0x2, %eax
jb 0x504c
jmp 0x503f
movl -0x84(%rbp), %eax
subl $0x2, %eax
je 0x5070
jmp 0x50a7
movq -0x18(%rbp), %rax
movl 0x178(%rax), %edi
movq -0x18(%rbp), %rsi
addq $0x98, %rsi
movq -0x40(%rbp), %rdx
movq -0x48(%rbp), %rcx
callq 0x3db0
jmp 0x50a7
movq -0x18(%rbp), %rdi
addq $0x98, %rdi
movq -0x40(%rbp), %rsi
movq -0x48(%rbp), %rdx
movq -0x30(%rbp), %rcx
callq 0x3b90
movl %eax, -0x64(%rbp)
cmpl $-0x1, -0x64(%rbp)
jne 0x50a5
leaq 0x9915(%rip), %rdi      # 0xe9b1
movb $0x0, %al
callq 0x2100
jmp 0x50d9
jmp 0x50a7
movq -0x18(%rbp), %rdi
addq $0x98, %rdi
callq 0x31a0
movw %ax, %cx
movq -0x18(%rbp), %rax
movw %cx, 0x1a8(%rax)
movq -0x28(%rbp), %rdi
callq 0x2290
xorl %eax, %eax
addq $0x90, %rsp
popq %rbp
retq
callq 0x58c0
movl $0x1, %edi
callq 0x22f0
nopl (%rax,%rax)