// File: /workspace/github_c_makefile_star2_O0/nimble-code[P]Modex/Src/xtract.c
// Function: modex_node
static void
modex_node(treenode *node, int tabs)
{	int ovis = visu, osaw, xtmp;
	char jumploc[32];

	if (!node)
	{	if (0) { printf("no node\n"); fflush(stdout); }
		return;
	}

	if (0)
	{	printf("%3d: modex_node %s (%p) tabs %d\n", node->hdr.line,
		name_of_node(node->hdr.type), node, tabs);
		fflush(stdout);
	}

	switch (node->hdr.type) {
	case TN_DECL_LIST:
	case TN_STEMNT_LIST:
	case TN_STEMNT:
	case TN_BLOCK:
	case TN_EXPR:
		break;
	default:	/* everything else is indented */
		linenr = node->hdr.line;
		vis_indent(tabs, "");
		break;
	}

	switch(node->hdr.type){
	case TN_ASSIGN:
		vis_start();
		vis_print("A: ");
same:		pending++;
//		fprintf(stderr, "B4 <%s>\n", OutBuf);
		modex_recur(node);	/* 1 - stmnt/decl/expr txt */
//		fprintf(stderr, "A4 <%s>\n", OutBuf);
		pending--;
		if (pending==0)
		{	/* intercept typenames without varnames */
			/* as in "main(void)" */
			if (node->hdr.type != TN_DECL
			||  !strstr(OutBuf, " ;"))
			{
				vis_flush(node);
			}
			vis_start();
			if (!in_args)
			{	vis_direct("\n");
		}	}
		return;

	case TN_FUNC_CALL:
		vis_print("F: ");
		goto same;

	case TN_STEMNT:
		if (node->hdr.which == LEAF_T)
		{	vis_start();
			goto same;
		}
		break;

	case TN_DECL:
		vis_start();
		vis_print("D: ");
		goto same;

	case TN_ARRAY_DECL:
		vis_start();
		vis_print("AD: ");
		goto same;

	case TN_EXPR:
		goto same;

	case TN_COND_EXPR:
		vis_start();
		vis_print("CE: ");
		goto same;

	case TN_FUNC_DECL:
		handle_fct(node, tabs);
		in_args++;
		modex_any(node->rnode, 0);	/* formal parameters */
		in_args--;
		return;

	case TN_WHILE:
		vis_indent(tabs, "/* while */\n");
		push_dostack(ZN);

	{	char oO[1024];

		xtmp = handle_cond(node->lnode, node->rnode, ZN, oO, tabs, "do\n");
		switch (xtmp) {
		case 2:
			vis_indent(tabs, "od;\n");
			break;
		case 1:
			if (node->lnode)
			{	handle_neg(node->lnode, oO, " -> break\n", ZN, tabs, "od;\n");
			} else
			{	vis_indent(tabs, "od;\n");
			}
			break;
		case 0:
			vis_direct("\t\t");
			vis_flush(node);
			vis_direct("/* XX? */\n");
			vis_start();
			break;
		}
	}
		pop_dostack();
		return;

	case TN_DOWHILE:
		vis_direct("\n");
		vis_flush(node);
		vis_start();
		push_dostack(ZN);
		vis_indent(tabs, "do	/* do-while */\n");
		vis_indent(tabs, ":: ");
		modex_any(node->rnode, tabs);	/* body */

	{	char oO[1024];

		if (node->lnode)
		{	xtmp = handle_cond(node->lnode, ZN, ZN, oO, tabs+2, "if\n");
			switch (xtmp) {
			case 2:
				vis_indent(tabs, "\n\tfi;\n");
				break;
			case 1:
				handle_neg(node->lnode, oO, "break\n", ZN, tabs+2, "\n\tfi\n");
				break;
			case 0:
				vis_direct("\t\t");
				vis_flush(node->lnode);
				vis_direct("break\n");
				vis_start();
				break;
	}	}	}

		vis_indent(tabs, "od;\n");
		vis_flush(node);
		vis_start();
		pop_dostack();
		return;

	case TN_JUMP:
		vis_start();
		switch (node->hdr.tok) {
		case CONT:
			use_dostack(tabs);
			goto moveon;
		case RETURN:
			vis_print("R: return "); /* goto Return */
			if (extended)
				check_type++;
			modex_recur(node->lnode);
			if (extended)
				check_type--;
			needreturn++;
			vis_flush(node);
			vis_start();
			goto moveon;
		case BREAK:
			vis_indent(tabs, "break;\n");
			goto moveon;
		case GOTO:
			vis_indent(tabs, "goto ");
			break;
		default:
			vis_print("J: ");
			vis_flush(node);
			vis_start();
			break;
		}
		modex_recur(node->lnode);	/* 3 - gotolabel */
		sprintf(tbuf, "%s;\n", OutBuf);
		vis_direct(tbuf);
moveon:		modex_any(node->rnode,tabs);
		return;

	case TN_SWITCH:
		vis_start();
		vis_direct("\n");

		modex_recur(node->lnode);	/* 2 - switch expr*/

		check_fct(OutBuf, tabs);

		vis_indent(tabs,"do /* switch */");

		osaw = sawdefault;
		push_swstack(OutBuf);		/* remember expr */
		modex_any(node->rnode, tabs);	/* handle the cases */

		/* fall out of switch - if break is missing */
		if (sw_first > 0)
		{	sprintf(jumploc, "goto C_%d /* fall out */\n",
				Cunique);
			vis_indent(tabs+1,jumploc);
		} else
			strcpy(jumploc, "");

		pop_swstack();
		if (!sawdefault)
		{	static int newnr = 0;
			char makeup[64];

			if (fallout)
			{	sprintf(makeup, ":: %s assert(%d == 0); break\n",
					do_difficult("else ->", 0), ++newnr);
			} else
			{	/* handle semantics of alt(x) in plan9 code */
				if (strncmp(SwLabel[sw_level], "alt(", strlen("alt(")) == 0)
					strcpy(makeup, "/* else suppressed for alt */\n");
				else
					sprintf(makeup, ":: %s break\n",
						do_difficult("else ->", 0));	
			}
			vis_indent(tabs, makeup);
		}
		sawdefault = osaw;

		vis_start();
		vis_indent(tabs,"od;\n");

		/* fall out of switch destination */
		if (strlen(jumploc) != 0)
		{	sprintf(tbuf, "C_%d:	skip;", Cunique++);
			vis_direct(tbuf);
		}

		return;

	case TN_LABEL:
		vis_start();
		vis_direct("\n");
		is_label++;
		modex_recur(node->lnode);	/* 4 - generate caselabel */
		is_label--;
		if (visu)
		{	if (strncmp(OutBuf, "case", strlen("case")) == 0
			||  strncmp(OutBuf, "default", strlen("default")) == 0)
			{	if (sw_first > 0)
				{	sprintf(jumploc, "goto C_%d /* fall thru */\n",
						Cunique);
					vis_indent(tabs+1,jumploc);
				}

				vis_indent(tabs, ":: ");
				/* case integer from lnode is in OutBuf */
				vis_print(" == ");	/* add == */
				use_swstack();	/* add switch expr */
				vis_flush(node->lnode);
				vis_direct("\n");

				if (sw_first > 1)
				{	if (ishidden)
					vis_indent(tabs+2,"skip; /* syntax */\n");
					sprintf(tbuf, "C_%d:", Cunique++);
					vis_direct(tbuf);
				}
				tabs += 2;
			} else
			{	sprintf(tbuf, "%s:\n", OutBuf);
				vis_direct(tbuf);
			}
			vis_start();
		}
		modex_any(node->rnode,tabs);		/* labeled block */
		return;

	case TN_INDEX:
		modex_recur(node->lnode);	/* 5a - array base */
		vis_print("[");
		modex_recur(node->rnode);	/* 5b - array index */
		vis_print("]");
		return;

	case TN_TRANS_LIST:
#if 0
	added in Feb. 2003, but this seems to break
	the examples int the example directory...
	removed in March 2004 -- gjh
		modex_any(node->lnode,tabs);	/* ?? fails to return on iproto.c */
		modex_any(node->rnode,tabs);
		break;
#endif
	case TN_DEREF:
	case TN_SELECT:
	case TN_FUNC_DEF:
	case TN_DECLS:
	case TN_EXPR_LIST:
	case TN_NAME_LIST:
	case TN_FIELD_LIST:
	case TN_IDENT_LIST:
	case TN_COMP_DECL:
	case TN_BIT_FIELD:
	case TN_PNTR:
	case TN_TYPE_LIST:
	case TN_TYPE_NME:
	case TN_INIT_LIST:
	case TN_INIT_BLK:
	case TN_OBJ_DEF:
	case TN_OBJ_REF:
	case TN_CAST:
	case TN_IF:
	case TN_FOR:
	case TN_ELLIPSIS:
	case TN_ENUM_LIST:
	case TN_PARAM_LIST:
	case TN_EMPTY:
		break;

	case TN_DECL_LIST:
	case TN_BLOCK:
	case TN_STEMNT_LIST:
		modex_any(node->lnode,tabs);
		modex_any(node->rnode,tabs);
		return;

	default:
		fprintf(stderr, "%s: unexpected node %s\n",
			progname, name_of_node(node->hdr.type));
		exit(1);
	}

	if (node->lnode)
	{	if (!ovis) doreturn(4);
		visu = ovis;
	}

	modex_any(node->lnode, tabs);

	if (node->rnode)
	{	if (!ovis) doreturn(5);
		visu = ovis;
	}
	modex_any(node->rnode, tabs);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x8d0, %rsp            # imm = 0x8D0
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
leaq 0x2e287(%rip), %rax     # 0x47ba0
movl (%rax), %eax
movl %eax, -0x10(%rbp)
cmpq $0x0, -0x8(%rbp)
jne 0x1992a
jmp 0x1a31c
movq -0x8(%rbp), %rax
movl 0x1c(%rax), %eax
movl %eax, -0x884(%rbp)
subl $0x4, %eax
je 0x19968
jmp 0x1993e
movl -0x884(%rbp), %eax
addl $-0x8, %eax
subl $0x2, %eax
jb 0x19968
jmp 0x1994e
movl -0x884(%rbp), %eax
subl $0x23, %eax
je 0x19968
jmp 0x1995b
movl -0x884(%rbp), %eax
subl $0x28, %eax
jne 0x1996a
jmp 0x19968
jmp 0x19986
movq -0x8(%rbp), %rax
movl 0x10(%rax), %eax
movl %eax, 0x3856d(%rip)     # 0x51ee4
movl -0xc(%rbp), %edi
leaq 0x1db3d(%rip), %rsi     # 0x374be
callq 0x15880
movq -0x8(%rbp), %rax
movl 0x1c(%rax), %eax
movq %rax, -0x890(%rbp)
subq $0x2c, %rax
ja 0x1a257
movq -0x890(%rbp), %rax
leaq 0x1b77c(%rip), %rcx     # 0x35128
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
callq 0x141b0
leaq 0x1b889(%rip), %rdi     # 0x3524a
callq 0x15790
movl 0x3a9c4(%rip), %eax     # 0x54390
addl $0x1, %eax
movl %eax, 0x3a9bb(%rip)     # 0x54390
movq -0x8(%rbp), %rdi
callq 0xadb0
movl 0x3a9ac(%rip), %eax     # 0x54390
addl $-0x1, %eax
movl %eax, 0x3a9a3(%rip)     # 0x54390
cmpl $0x0, 0x3a99c(%rip)     # 0x54390
jne 0x19a3e
movq -0x8(%rbp), %rax
cmpl $0x5, 0x1c(%rax)
jne 0x19a19
leaq 0x2eb49(%rip), %rdi     # 0x48550
leaq 0x1da94(%rip), %rsi     # 0x374a2
callq 0x4280
cmpq $0x0, %rax
jne 0x19a22
movq -0x8(%rbp), %rdi
callq 0x15110
callq 0x141b0
cmpl $0x0, 0x30b62(%rip)     # 0x4a590
jne 0x19a3c
leaq 0x1c020(%rip), %rdi     # 0x35a57
callq 0x10b40
jmp 0x19a3e
jmp 0x1a31c
leaq 0x1b804(%rip), %rdi     # 0x3524e
callq 0x15790
jmp 0x199c6
movq -0x8(%rbp), %rax
cmpl $0x1, (%rax)
jne 0x19a67
callq 0x141b0
jmp 0x199c6
jmp 0x1a2ae
callq 0x141b0
leaq 0x1da2e(%rip), %rdi     # 0x374a6
callq 0x15790
jmp 0x199c6
callq 0x141b0
leaq 0x1da17(%rip), %rdi     # 0x374a5
callq 0x15790
jmp 0x199c6
jmp 0x199c6
callq 0x141b0
leaq 0x1da01(%rip), %rdi     # 0x374aa
callq 0x15790
jmp 0x199c6
movq -0x8(%rbp), %rdi
movl -0xc(%rbp), %esi
callq 0x1a730
movl 0x30acb(%rip), %eax     # 0x4a590
addl $0x1, %eax
movl %eax, 0x30ac2(%rip)     # 0x4a590
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rdi
xorl %esi, %esi
callq 0x15ad0
movl 0x30aad(%rip), %eax     # 0x4a590
addl $-0x1, %eax
movl %eax, 0x30aa4(%rip)     # 0x4a590
jmp 0x1a31c
movl -0xc(%rbp), %edi
leaq 0x1d9b4(%rip), %rsi     # 0x374af
callq 0x15880
xorl %eax, %eax
movl %eax, %edi
movq %rdi, -0x8a0(%rbp)
callq 0x15960
movq -0x8a0(%rbp), %rdx
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
movq 0x38(%rax), %rsi
movl -0xc(%rbp), %r8d
leaq 0x1cbf8(%rip), %r9      # 0x36726
leaq -0x440(%rbp), %rcx
callq 0x19250
movl %eax, -0x18(%rbp)
movl -0x18(%rbp), %eax
movl %eax, -0x894(%rbp)
testl %eax, %eax
je 0x19bc3
jmp 0x19b4c
movl -0x894(%rbp), %eax
subl $0x1, %eax
je 0x19b7b
jmp 0x19b59
movl -0x894(%rbp), %eax
subl $0x2, %eax
jne 0x19be9
jmp 0x19b6a
movl -0xc(%rbp), %edi
leaq 0x1cbf3(%rip), %rsi     # 0x36767
callq 0x15880
jmp 0x19be9
movq -0x8(%rbp), %rax
cmpq $0x0, 0x30(%rax)
je 0x19bb2
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
leaq -0x440(%rbp), %rsi
movl -0xc(%rbp), %r8d
leaq 0x1cbb1(%rip), %rdx     # 0x36751
xorl %eax, %eax
movl %eax, %ecx
leaq 0x1cbbc(%rip), %r9      # 0x36767
callq 0x19610
jmp 0x19bc1
movl -0xc(%rbp), %edi
leaq 0x1cbab(%rip), %rsi     # 0x36767
callq 0x15880
jmp 0x19be9
leaq 0x1d8f2(%rip), %rdi     # 0x374bc
callq 0x10b40
movq -0x8(%rbp), %rdi
callq 0x15110
leaq 0x1d8e0(%rip), %rdi     # 0x374bf
callq 0x10b40
callq 0x141b0
callq 0x15b80
jmp 0x1a31c
leaq 0x1be5d(%rip), %rdi     # 0x35a57
callq 0x10b40
movq -0x8(%rbp), %rdi
callq 0x15110
callq 0x141b0
xorl %eax, %eax
movl %eax, %edi
callq 0x15960
movl -0xc(%rbp), %edi
leaq 0x1d8aa(%rip), %rsi     # 0x374ca
callq 0x15880
movl -0xc(%rbp), %edi
leaq 0x1d802(%rip), %rsi     # 0x37431
callq 0x15880
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rdi
movl -0xc(%rbp), %esi
callq 0x15ad0
movq -0x8(%rbp), %rax
cmpq $0x0, 0x30(%rax)
je 0x19d16
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
movl -0xc(%rbp), %r8d
addl $0x2, %r8d
leaq 0x1cfbc(%rip), %r9      # 0x36c26
xorl %eax, %eax
movl %eax, %edx
leaq -0x840(%rbp), %rcx
movq %rdx, %rsi
callq 0x19250
movl %eax, -0x18(%rbp)
movl -0x18(%rbp), %eax
movl %eax, -0x8a4(%rbp)
testl %eax, %eax
je 0x19cea
jmp 0x19c8f
movl -0x8a4(%rbp), %eax
subl $0x1, %eax
je 0x19cba
jmp 0x19c9c
movl -0x8a4(%rbp), %eax
subl $0x2, %eax
jne 0x19d14
jmp 0x19ca9
movl -0xc(%rbp), %edi
leaq 0x1d774(%rip), %rsi     # 0x37427
callq 0x15880
jmp 0x19d14
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
leaq -0x840(%rbp), %rsi
movl -0xc(%rbp), %r8d
addl $0x2, %r8d
leaq 0x1abb5(%rip), %rdx     # 0x3488d
xorl %eax, %eax
movl %eax, %ecx
leaq 0x1d7fa(%rip), %r9      # 0x374dd
callq 0x19610
jmp 0x19d14
leaq 0x1d7cb(%rip), %rdi     # 0x374bc
callq 0x10b40
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0x15110
leaq 0x1ab83(%rip), %rdi     # 0x3488d
callq 0x10b40
callq 0x141b0
jmp 0x19d16
movl -0xc(%rbp), %edi
leaq 0x1ca47(%rip), %rsi     # 0x36767
callq 0x15880
movq -0x8(%rbp), %rdi
callq 0x15110
callq 0x141b0
callq 0x15b80
jmp 0x1a31c
callq 0x141b0
movq -0x8(%rbp), %rax
movl 0x18(%rax), %eax
addl $0xfffffee6, %eax       # imm = 0xFFFFFEE6
movl %eax, %ecx
movq %rcx, -0x8b0(%rbp)
subl $0x12, %eax
ja 0x19e14
movq -0x8b0(%rbp), %rax
leaq 0x1b46e(%rip), %rcx     # 0x351dc
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl -0xc(%rbp), %edi
callq 0x15a00
jmp 0x19e63
leaq 0x1d758(%rip), %rdi     # 0x374e3
callq 0x15790
leaq 0x2e0cd(%rip), %rax     # 0x47e64
cmpl $0x0, (%rax)
je 0x19dab
movl 0x3da4e(%rip), %eax     # 0x577f0
addl $0x1, %eax
movl %eax, 0x3da45(%rip)     # 0x577f0
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0xadb0
leaq 0x2e0a5(%rip), %rax     # 0x47e64
cmpl $0x0, (%rax)
je 0x19dd3
movl 0x3da26(%rip), %eax     # 0x577f0
addl $-0x1, %eax
movl %eax, 0x3da1d(%rip)     # 0x577f0
movl 0x3a59f(%rip), %eax     # 0x54378
addl $0x1, %eax
movl %eax, 0x3a596(%rip)     # 0x54378
movq -0x8(%rbp), %rdi
callq 0x15110
callq 0x141b0
jmp 0x19e63
movl -0xc(%rbp), %edi
leaq 0x1d6f2(%rip), %rsi     # 0x374ee
callq 0x15880
jmp 0x19e63
movl -0xc(%rbp), %edi
leaq 0x1c271(%rip), %rsi     # 0x3607e
callq 0x15880
jmp 0x19e2e
leaq 0x1d6db(%rip), %rdi     # 0x374f6
callq 0x15790
movq -0x8(%rbp), %rdi
callq 0x15110
callq 0x141b0
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0xadb0
leaq 0x3298e(%rip), %rdi     # 0x4c7d0
leaq 0x1d6b1(%rip), %rsi     # 0x374fa
leaq 0x2e700(%rip), %rdx     # 0x48550
movb $0x0, %al
callq 0x4260
leaq 0x32972(%rip), %rdi     # 0x4c7d0
callq 0x10b40
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rdi
movl -0xc(%rbp), %esi
callq 0x15ad0
jmp 0x1a31c
callq 0x141b0
leaq 0x1bbd3(%rip), %rdi     # 0x35a57
callq 0x10b40
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0xadb0
movl -0xc(%rbp), %esi
leaq 0x2e6b0(%rip), %rdi     # 0x48550
callq 0x158e0
movl -0xc(%rbp), %edi
leaq 0x1d650(%rip), %rsi     # 0x374ff
callq 0x15880
movl 0x3802e(%rip), %eax     # 0x51ee8
movl %eax, -0x14(%rbp)
leaq 0x2e68c(%rip), %rdi     # 0x48550
callq 0x15ba0
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rdi
movl -0xc(%rbp), %esi
callq 0x15ad0
cmpl $0x0, 0x38420(%rip)     # 0x52300
jle 0x19f0b
leaq -0x40(%rbp), %rdi
movl 0x3d908(%rip), %edx     # 0x577f4
leaq 0x1d61c(%rip), %rsi     # 0x3750f
movb $0x0, %al
callq 0x4260
movl -0xc(%rbp), %edi
addl $0x1, %edi
leaq -0x40(%rbp), %rsi
callq 0x15880
jmp 0x19f1b
leaq -0x40(%rbp), %rdi
leaq 0x1d5a8(%rip), %rsi     # 0x374be
callq 0x40a0
callq 0x15c80
cmpl $0x0, 0x37fc1(%rip)     # 0x51ee8
jne 0x1a000
leaq 0x2df40(%rip), %rax     # 0x47e74
cmpl $0x0, (%rax)
je 0x19f7e
leaq -0x880(%rbp), %rax
movq %rax, -0x8b8(%rbp)
leaq 0x1c0d6(%rip), %rdi     # 0x36024
xorl %esi, %esi
callq 0x14f40
movq -0x8b8(%rbp), %rdi
movq %rax, %rdx
movl 0x3d893(%rip), %ecx     # 0x577f8
addl $0x1, %ecx
movl %ecx, 0x3d88a(%rip)     # 0x577f8
leaq 0x1d5b4(%rip), %rsi     # 0x37529
movb $0x0, %al
callq 0x4260
jmp 0x19ff1
movslq 0x36f4b(%rip), %rcx     # 0x50ed0
leaq 0x36d44(%rip), %rax     # 0x50cd0
movq (%rax,%rcx,8), %rdi
leaq 0x1d5b0(%rip), %rsi     # 0x37547
movl $0x4, %edx
callq 0x4090
cmpl $0x0, %eax
jne 0x19fbb
leaq -0x880(%rbp), %rdi
leaq 0x1d598(%rip), %rsi     # 0x3754c
callq 0x40a0
jmp 0x19fef
leaq -0x880(%rbp), %rax
movq %rax, -0x8c0(%rbp)
leaq 0x1c054(%rip), %rdi     # 0x36024
xorl %esi, %esi
callq 0x14f40
movq -0x8c0(%rbp), %rdi
movq %rax, %rdx
leaq 0x1d583(%rip), %rsi     # 0x3756b
movb $0x0, %al
callq 0x4260
jmp 0x19ff1
movl -0xc(%rbp), %edi
leaq -0x880(%rbp), %rsi
callq 0x15880
movl -0x14(%rbp), %eax
movl %eax, 0x37edf(%rip)     # 0x51ee8
callq 0x141b0
movl -0xc(%rbp), %edi
leaq 0x1c74f(%rip), %rsi     # 0x36767
callq 0x15880
leaq -0x40(%rbp), %rdi
callq 0x40f0
cmpq $0x0, %rax
je 0x1a05e
movl 0x3d7c2(%rip), %edx     # 0x577f4
movl %edx, %eax
addl $0x1, %eax
movl %eax, 0x3d7b7(%rip)     # 0x577f4
leaq 0x3278c(%rip), %rdi     # 0x4c7d0
leaq 0x1d52d(%rip), %rsi     # 0x37578
movb $0x0, %al
callq 0x4260
leaq 0x32777(%rip), %rdi     # 0x4c7d0
callq 0x10b40
jmp 0x1a31c
callq 0x141b0
leaq 0x1b9e8(%rip), %rdi     # 0x35a57
callq 0x10b40
movl 0x3051a(%rip), %eax     # 0x4a594
addl $0x1, %eax
movl %eax, 0x30511(%rip)     # 0x4a594
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0xadb0
movl 0x304fe(%rip), %eax     # 0x4a594
addl $-0x1, %eax
movl %eax, 0x304f5(%rip)     # 0x4a594
leaq 0x2dafa(%rip), %rax     # 0x47ba0
cmpl $0x0, (%rax)
je 0x1a1e4
leaq 0x2e49a(%rip), %rdi     # 0x48550
leaq 0x1d4c7(%rip), %rsi     # 0x37584
movl $0x4, %edx
callq 0x4090
cmpl $0x0, %eax
je 0x1a0ed
leaq 0x2e47d(%rip), %rdi     # 0x48550
leaq 0x1c966(%rip), %rsi     # 0x36a40
movl $0x7, %edx
callq 0x4090
cmpl $0x0, %eax
jne 0x1a1b7
cmpl $0x0, 0x3820c(%rip)     # 0x52300
jle 0x1a11d
leaq -0x40(%rbp), %rdi
movl 0x3d6f4(%rip), %edx     # 0x577f4
leaq 0x1d482(%rip), %rsi     # 0x37589
movb $0x0, %al
callq 0x4260
movl -0xc(%rbp), %edi
addl $0x1, %edi
leaq -0x40(%rbp), %rsi
callq 0x15880
movl -0xc(%rbp), %edi
leaq 0x1d30a(%rip), %rsi     # 0x37431
callq 0x15880
leaq 0x1d471(%rip), %rdi     # 0x375a4
callq 0x15790
callq 0x15c10
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0x15110
leaq 0x1b906(%rip), %rdi     # 0x35a57
callq 0x10b40
cmpl $0x1, 0x381a3(%rip)     # 0x52300
jle 0x1a1ac
cmpl $0x0, 0x36b5a(%rip)     # 0x50cc0
je 0x1a17a
movl -0xc(%rbp), %edi
addl $0x2, %edi
leaq 0x1d434(%rip), %rsi     # 0x375a9
callq 0x15880
movl 0x3d674(%rip), %edx     # 0x577f4
movl %edx, %eax
addl $0x1, %eax
movl %eax, 0x3d669(%rip)     # 0x577f4
leaq 0x3263e(%rip), %rdi     # 0x4c7d0
leaq 0x1d424(%rip), %rsi     # 0x375bd
movb $0x0, %al
callq 0x4260
leaq 0x32629(%rip), %rdi     # 0x4c7d0
callq 0x10b40
movl -0xc(%rbp), %eax
addl $0x2, %eax
movl %eax, -0xc(%rbp)
jmp 0x1a1df
leaq 0x32612(%rip), %rdi     # 0x4c7d0
leaq 0x1d3fe(%rip), %rsi     # 0x375c3
leaq 0x2e384(%rip), %rdx     # 0x48550
movb $0x0, %al
callq 0x4260
leaq 0x325f6(%rip), %rdi     # 0x4c7d0
callq 0x10b40
callq 0x141b0
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rdi
movl -0xc(%rbp), %esi
callq 0x15ad0
jmp 0x1a31c
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
callq 0xadb0
leaq 0x18fc1(%rip), %rdi     # 0x331ce
callq 0x15790
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rdi
callq 0xadb0
leaq 0x18f0b(%rip), %rdi     # 0x33131
callq 0x15790
jmp 0x1a31c
jmp 0x1a2ae
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
movl -0xc(%rbp), %esi
callq 0x15ad0
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rdi
movl -0xc(%rbp), %esi
callq 0x15ad0
jmp 0x1a31c
movq 0x2ad9a(%rip), %rax     # 0x44ff8
movq (%rax), %rax
movq %rax, -0x8d0(%rbp)
leaq 0x2af01(%rip), %rax     # 0x45170
movq (%rax), %rax
movq %rax, -0x8c8(%rbp)
movq -0x8(%rbp), %rax
movl 0x1c(%rax), %edi
callq 0x1bc40
movq -0x8d0(%rbp), %rdi
movq -0x8c8(%rbp), %rdx
movq %rax, %rcx
leaq 0x1d32b(%rip), %rsi     # 0x375c8
movb $0x0, %al
callq 0x4190
movl $0x1, %edi
callq 0x4270
movq -0x8(%rbp), %rax
cmpq $0x0, 0x30(%rax)
je 0x1a2d5
cmpl $0x0, -0x10(%rbp)
jne 0x1a2c9
movl $0x4, %edi
callq 0x17090
movl -0x10(%rbp), %ecx
leaq 0x2d8cd(%rip), %rax     # 0x47ba0
movl %ecx, (%rax)
movq -0x8(%rbp), %rax
movq 0x30(%rax), %rdi
movl -0xc(%rbp), %esi
callq 0x15ad0
movq -0x8(%rbp), %rax
cmpq $0x0, 0x38(%rax)
je 0x1a30c
cmpl $0x0, -0x10(%rbp)
jne 0x1a300
movl $0x5, %edi
callq 0x17090
movl -0x10(%rbp), %ecx
leaq 0x2d896(%rip), %rax     # 0x47ba0
movl %ecx, (%rax)
movq -0x8(%rbp), %rax
movq 0x38(%rax), %rdi
movl -0xc(%rbp), %esi
callq 0x15ad0
addq $0x8d0, %rsp            # imm = 0x8D0
popq %rbp
retq
nopw %cs:(%rax,%rax)