// File: /workspace/github_c_makefile_star2_O0/wtarreau[P]httpterm/httpterm.c
// Function: readcfgfile
int readcfgfile(char *file) {
    char thisline[256];
    char *line;
    FILE *f = NULL;
    int linenum = 0;
    char *end;
    char *args[MAX_LINE_ARGS];
    int arg;
    int cfgerr = 0;
    int confsect = CFG_NONE;

    struct proxy *curproxy = NULL;
    struct server *newsrv = NULL;

    if (file && (f=fopen(file,"r")) == NULL)
	return -1;

    init_default_instance();

    while (f && fgets(line = thisline, sizeof(thisline), f) != NULL) {
	linenum++;

	end = line + strlen(line);

	/* skip leading spaces */
	while (isspace((int)*line))
	    line++;
	
	arg = 0;
	args[arg] = line;

	while (*line && arg < MAX_LINE_ARGS) {
	    /* first, we'll replace \\, \<space>, \#, \r, \n, \t, \xXX with their
	     * C equivalent value. Other combinations left unchanged (eg: \1).
	     */
	    if (*line == '\\') {
		int skip = 0;
		if (line[1] == ' ' || line[1] == '\\' || line[1] == '#') {
		    *line = line[1];
		    skip = 1;
		}
		else if (line[1] == 'r') {
		    *line = '\r';
		    skip = 1;
		} 
		else if (line[1] == 'n') {
		    *line = '\n';
		    skip = 1;
		}
		else if (line[1] == 't') {
		    *line = '\t';
		    skip = 1;
		}
		else if (line[1] == 'x') {
		    if ((line + 3 < end ) && ishex(line[2]) && ishex(line[3])) {
			unsigned char hex1, hex2;
			hex1 = toupper(line[2]) - '0';
			hex2 = toupper(line[3]) - '0';
			if (hex1 > 9) hex1 -= 'A' - '9' - 1;
			if (hex2 > 9) hex2 -= 'A' - '9' - 1;
			*line = (hex1<<4) + hex2;
			skip = 3;
		    }
		    else {
			Alert("parsing [%s:%d] : invalid or incomplete '\\x' sequence in '%s'.\n", file, linenum, args[0]);
			return -1;
		    }
		}
		if (skip) {
		    memmove(line + 1, line + 1 + skip, end - (line + skip + 1));
		    end -= skip;
		}
		line++;
	    }
	    else if (*line == '#' || *line == '\n' || *line == '\r') {
		/* end of string, end of loop */
		*line = 0;
		break;
	    }
	    else if (isspace((int)*line)) {
		/* a non-escaped space is an argument separator */
		*line++ = 0;
		while (isspace((int)*line))
		    line++;
		args[++arg] = line;
	    }
	    else {
		line++;
	    }
	}

	/* empty line */
	if (!**args)
	    continue;

	/* zero out remaining args */
	while (++arg < MAX_LINE_ARGS) {
	    args[arg] = line;
	}

	if (!strcmp(args[0], "listen") || !strcmp(args[0], "defaults"))  /* new proxy */
	    confsect = CFG_LISTEN;
	else if (!strcmp(args[0], "global"))  /* global config */
	    confsect = CFG_GLOBAL;
	/* else it's a section keyword */

	switch (confsect) {
	case CFG_LISTEN:
	    if (cfg_parse_listen(file, linenum, args) < 0)
		return -1;
	    break;
	case CFG_GLOBAL:
	    if (cfg_parse_global(file, linenum, args) < 0)
		return -1;
	    break;
	default:
	    Alert("parsing [%s:%d] : unknown keyword '%s' out of section.\n", file, linenum, args[0]);
	    return -1;
	}
	    
	    
    }
    if (f)
	fclose(f);

    /* Maybe the user has specified a listener on the command line */
    if (cmdline_listen) {
	const char *name = "command line";
	args[0] = "listen";
	args[1] = "dummy";
	args[2] = "\0";
	if (cfg_parse_listen(name, 0, args) < 0)
	    return -1;

	args[0] = "bind";
	args[1] = cmdline_listen;
	args[2] = "\0";
	if (cfg_parse_listen(name, 0, args) < 0)
	    return -1;

	args[0] = "object";
	args[1] = "name";
	args[2] = "dummy";
	args[3] = "\0";
	if (cfg_parse_listen(name, 0, args) < 0)
	    return -1;

	args[0] = "clitimeout";
	args[1] = "10000";
	args[2] = "\0";
	if (cfg_parse_listen(name, 0, args) < 0)
	    return -1;
    }

    /*
     * Now, check for the integrity of all that we have collected.
     */

    /* will be needed further to delay some tasks */
    tv_now(&now);

    if ((curproxy = proxy) == NULL) {
	Alert("parsing %s : no <listen> line. Nothing to do !\n",
	      file);
	return -1;
    }

    while (curproxy != NULL) {
	if (curproxy->state == PR_STSTOPPED) {
	    curproxy = curproxy->next;
	    continue;
	}

	if (curproxy->listen == NULL) {
	    Alert("parsing %s : listener %s has no listen address. Please either specify a valid address on the <listen> line, or use the <bind> keyword.\n", file, curproxy->id);
	    cfgerr++;
	}

	/* first, we will invert the servers list order */
	newsrv = NULL;
	while (curproxy->srv) {
	    struct server *next;

	    next = curproxy->srv->next;
	    curproxy->srv->next = newsrv;
	    newsrv = curproxy->srv;
	    if (!next)
		break;
	    curproxy->srv = next;
	}

	/* now, newsrv == curproxy->srv */
	if (newsrv) {
	    struct server *srv;
	    int pgcd;
	    int act;

	    /* We will factor the weights to reduce the table,
	     * using Euclide's largest common divisor algorithm
	     */
	    pgcd = newsrv->uweight + 1;
	    for (srv = newsrv->next; srv && pgcd > 1; srv = srv->next) {
		int t, w;
		
		w = srv->uweight + 1;
		while (w) {
		    t = pgcd % w;
		    pgcd = w;
		    w = t;
		}
	    }

	    act = 0;
	    for (srv = newsrv; srv; srv = srv->next) {
		srv->eweight = ((srv->uweight + 1) / pgcd) - 1;
		act += srv->eweight + 1;
	    }

	    curproxy->srv_map = (struct server **)calloc(act, sizeof(struct server *));
	    /* recounts servers and their weights */
	    recount_servers(curproxy);
	    recalc_server_map(curproxy);
	}

	if (curproxy->errmsg.msg400 == NULL) {
	    curproxy->errmsg.msg400 = (char *)HTTP_400;
	    curproxy->errmsg.len400 = strlen(HTTP_400);
	}
	if (curproxy->errmsg.msg403 == NULL) {
	    curproxy->errmsg.msg403 = (char *)HTTP_403;
	    curproxy->errmsg.len403 = strlen(HTTP_403);
	}
	if (curproxy->errmsg.msg408 == NULL) {
	    curproxy->errmsg.msg408 = (char *)HTTP_408;
	    curproxy->errmsg.len408 = strlen(HTTP_408);
	}
	if (curproxy->errmsg.msg500 == NULL) {
	    curproxy->errmsg.msg500 = (char *)HTTP_500;
	    curproxy->errmsg.len500 = strlen(HTTP_500);
	}
	if (curproxy->errmsg.msg502 == NULL) {
	    curproxy->errmsg.msg502 = (char *)HTTP_502;
	    curproxy->errmsg.len502 = strlen(HTTP_502);
	}
	if (curproxy->errmsg.msg503 == NULL) {
	    curproxy->errmsg.msg503 = (char *)HTTP_503;
	    curproxy->errmsg.len503 = strlen(HTTP_503);
	}
	if (curproxy->errmsg.msg504 == NULL) {
	    curproxy->errmsg.msg504 = (char *)HTTP_504;
	    curproxy->errmsg.len504 = strlen(HTTP_504);
	}
	curproxy = curproxy->next;
    }
    if (cfgerr > 0) {
	Alert("Errors found in configuration file, aborting.\n");
	return -1;
    }
    else
	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x2e0, %rsp            # imm = 0x2E0
movq %rdi, -0x10(%rbp)
movq $0x0, -0x120(%rbp)
movl $0x0, -0x124(%rbp)
movl $0x0, -0x278(%rbp)
movl $0x0, -0x27c(%rbp)
movq $0x0, -0x288(%rbp)
movq $0x0, -0x290(%rbp)
cmpq $0x0, -0x10(%rbp)
je 0xa73e
movq -0x10(%rbp), %rdi
leaq 0x44ac(%rip), %rsi      # 0xebcc
callq 0x2370
movq %rax, -0x120(%rbp)
cmpq $0x0, %rax
jne 0xa73e
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0xb322
callq 0x9570
xorl %eax, %eax
cmpq $0x0, -0x120(%rbp)
movb %al, -0x2c1(%rbp)
je 0xa781
leaq -0x110(%rbp), %rdi
movq %rdi, -0x118(%rbp)
movq -0x120(%rbp), %rdx
movl $0x100, %esi            # imm = 0x100
callq 0x2200
cmpq $0x0, %rax
setne %al
movb %al, -0x2c1(%rbp)
movb -0x2c1(%rbp), %al
testb $0x1, %al
jne 0xa790
jmp 0xad1a
movl -0x124(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x124(%rbp)
movq -0x118(%rbp), %rax
movq %rax, -0x2d0(%rbp)
movq -0x118(%rbp), %rdi
callq 0x2120
movq %rax, %rcx
movq -0x2d0(%rbp), %rax
addq %rcx, %rax
movq %rax, -0x130(%rbp)
callq 0x2460
movq (%rax), %rax
movq -0x118(%rbp), %rcx
movsbl (%rcx), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x2000, %eax           # imm = 0x2000
cmpl $0x0, %eax
je 0xa804
movq -0x118(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x118(%rbp)
jmp 0xa7cd
movl $0x0, -0x274(%rbp)
movq -0x118(%rbp), %rcx
movslq -0x274(%rbp), %rax
movq %rcx, -0x270(%rbp,%rax,8)
movq -0x118(%rbp), %rax
movsbl (%rax), %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x2d1(%rbp)
je 0xa84b
cmpl $0x28, -0x274(%rbp)
setl %al
movb %al, -0x2d1(%rbp)
movb -0x2d1(%rbp), %al
testb $0x1, %al
jne 0xa85a
jmp 0xabd9
movq -0x118(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x5c, %eax
jne 0xaaee
movl $0x0, -0x294(%rbp)
movq -0x118(%rbp), %rax
movsbl 0x1(%rax), %eax
cmpl $0x20, %eax
je 0xa8a7
movq -0x118(%rbp), %rax
movsbl 0x1(%rax), %eax
cmpl $0x5c, %eax
je 0xa8a7
movq -0x118(%rbp), %rax
movsbl 0x1(%rax), %eax
cmpl $0x23, %eax
jne 0xa8c9
movq -0x118(%rbp), %rax
movb 0x1(%rax), %cl
movq -0x118(%rbp), %rax
movb %cl, (%rax)
movl $0x1, -0x294(%rbp)
jmp 0xaa6b
movq -0x118(%rbp), %rax
movsbl 0x1(%rax), %eax
cmpl $0x72, %eax
jne 0xa8f2
movq -0x118(%rbp), %rax
movb $0xd, (%rax)
movl $0x1, -0x294(%rbp)
jmp 0xaa69
movq -0x118(%rbp), %rax
movsbl 0x1(%rax), %eax
cmpl $0x6e, %eax
jne 0xa91b
movq -0x118(%rbp), %rax
movb $0xa, (%rax)
movl $0x1, -0x294(%rbp)
jmp 0xaa67
movq -0x118(%rbp), %rax
movsbl 0x1(%rax), %eax
cmpl $0x74, %eax
jne 0xa944
movq -0x118(%rbp), %rax
movb $0x9, (%rax)
movl $0x1, -0x294(%rbp)
jmp 0xaa65
movq -0x118(%rbp), %rax
movsbl 0x1(%rax), %eax
cmpl $0x78, %eax
jne 0xaa63
movq -0x118(%rbp), %rax
addq $0x3, %rax
cmpq -0x130(%rbp), %rax
jae 0xaa36
movq -0x118(%rbp), %rax
movsbl 0x2(%rax), %edi
callq 0xb330
cmpl $0x0, %eax
je 0xaa36
movq -0x118(%rbp), %rax
movsbl 0x3(%rax), %edi
callq 0xb330
cmpl $0x0, %eax
je 0xaa36
movq -0x118(%rbp), %rax
movsbl 0x2(%rax), %edi
callq 0x20b0
subl $0x30, %eax
movb %al, -0x295(%rbp)
movq -0x118(%rbp), %rax
movsbl 0x3(%rax), %edi
callq 0x20b0
subl $0x30, %eax
movb %al, -0x296(%rbp)
movzbl -0x295(%rbp), %eax
cmpl $0x9, %eax
jle 0xa9f0
movzbl -0x295(%rbp), %eax
subl $0x7, %eax
movb %al, -0x295(%rbp)
movzbl -0x296(%rbp), %eax
cmpl $0x9, %eax
jle 0xaa0c
movzbl -0x296(%rbp), %eax
subl $0x7, %eax
movb %al, -0x296(%rbp)
movzbl -0x295(%rbp), %eax
shll $0x4, %eax
movzbl -0x296(%rbp), %ecx
addl %ecx, %eax
movb %al, %cl
movq -0x118(%rbp), %rax
movb %cl, (%rax)
movl $0x3, -0x294(%rbp)
jmp 0xaa61
movq -0x10(%rbp), %rsi
movl -0x124(%rbp), %edx
movq -0x270(%rbp), %rcx
leaq 0x4180(%rip), %rdi      # 0xebce
movb $0x0, %al
callq 0x2d40
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0xb322
jmp 0xaa63
jmp 0xaa65
jmp 0xaa67
jmp 0xaa69
jmp 0xaa6b
cmpl $0x0, -0x294(%rbp)
je 0xaad7
movq -0x118(%rbp), %rdi
addq $0x1, %rdi
movq -0x118(%rbp), %rsi
addq $0x1, %rsi
movslq -0x294(%rbp), %rax
addq %rax, %rsi
movq -0x130(%rbp), %rdx
movq -0x118(%rbp), %rax
movslq -0x294(%rbp), %rcx
addq %rcx, %rax
addq $0x1, %rax
subq %rax, %rdx
callq 0x2330
movl -0x294(%rbp), %ecx
movq -0x130(%rbp), %rax
movslq %ecx, %rdx
xorl %ecx, %ecx
subq %rdx, %rcx
addq %rcx, %rax
movq %rax, -0x130(%rbp)
movq -0x118(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x118(%rbp)
jmp 0xabd4
movq -0x118(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x23, %eax
je 0xab1b
movq -0x118(%rbp), %rax
movsbl (%rax), %eax
cmpl $0xa, %eax
je 0xab1b
movq -0x118(%rbp), %rax
movsbl (%rax), %eax
cmpl $0xd, %eax
jne 0xab2a
movq -0x118(%rbp), %rax
movb $0x0, (%rax)
jmp 0xabd9
callq 0x2460
movq (%rax), %rax
movq -0x118(%rbp), %rcx
movsbl (%rcx), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x2000, %eax           # imm = 0x2000
cmpl $0x0, %eax
je 0xabbe
movq -0x118(%rbp), %rax
movq %rax, %rcx
addq $0x1, %rcx
movq %rcx, -0x118(%rbp)
movb $0x0, (%rax)
callq 0x2460
movq (%rax), %rax
movq -0x118(%rbp), %rcx
movsbl (%rcx), %ecx
movslq %ecx, %rcx
movzwl (%rax,%rcx,2), %eax
andl $0x2000, %eax           # imm = 0x2000
cmpl $0x0, %eax
je 0xab9c
movq -0x118(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x118(%rbp)
jmp 0xab65
movq -0x118(%rbp), %rcx
movl -0x274(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x274(%rbp)
cltq
movq %rcx, -0x270(%rbp,%rax,8)
jmp 0xabd0
movq -0x118(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x118(%rbp)
jmp 0xabd2
jmp 0xabd4
jmp 0xa824
movq -0x270(%rbp), %rax
cmpb $0x0, (%rax)
jne 0xabea
jmp 0xa743
jmp 0xabec
movl -0x274(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x274(%rbp)
cmpl $0x28, %eax
jge 0xac18
movq -0x118(%rbp), %rcx
movslq -0x274(%rbp), %rax
movq %rcx, -0x270(%rbp,%rax,8)
jmp 0xabec
movq -0x270(%rbp), %rdi
leaq 0x3a78(%rip), %rsi      # 0xe69e
callq 0x2220
cmpl $0x0, %eax
je 0xac48
movq -0x270(%rbp), %rdi
leaq 0x3b01(%rip), %rsi      # 0xe73f
callq 0x2220
cmpl $0x0, %eax
jne 0xac54
movl $0x2, -0x27c(%rbp)
jmp 0xac78
movq -0x270(%rbp), %rdi
leaq 0x38ad(%rip), %rsi      # 0xe50f
callq 0x2220
cmpl $0x0, %eax
jne 0xac76
movl $0x1, -0x27c(%rbp)
jmp 0xac78
movl -0x27c(%rbp), %eax
movl %eax, -0x2d8(%rbp)
subl $0x1, %eax
je 0xacc1
jmp 0xac8b
movl -0x2d8(%rbp), %eax
subl $0x2, %eax
jne 0xacea
jmp 0xac98
movq -0x10(%rbp), %rdi
movl -0x124(%rbp), %esi
leaq -0x270(%rbp), %rdx
callq 0x95e0
cmpl $0x0, %eax
jge 0xacbf
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0xb322
jmp 0xad15
movq -0x10(%rbp), %rdi
movl -0x124(%rbp), %esi
leaq -0x270(%rbp), %rdx
callq 0x8ee0
cmpl $0x0, %eax
jge 0xace8
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0xb322
jmp 0xad15
movq -0x10(%rbp), %rsi
movl -0x124(%rbp), %edx
movq -0x270(%rbp), %rcx
leaq 0x3f0c(%rip), %rdi      # 0xec0e
movb $0x0, %al
callq 0x2d40
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0xb322
jmp 0xa743
cmpq $0x0, -0x120(%rbp)
je 0xad30
movq -0x120(%rbp), %rdi
callq 0x2100
cmpq $0x0, 0x6640(%rip)      # 0x11378
je 0xae9c
leaq 0x3f01(%rip), %rax      # 0xec46
movq %rax, -0x2a0(%rbp)
leaq 0x394b(%rip), %rax      # 0xe69e
movq %rax, -0x270(%rbp)
leaq 0x3ef2(%rip), %rax      # 0xec53
movq %rax, -0x268(%rbp)
leaq 0x2431(%rip), %rax      # 0xd1a0
movq %rax, -0x260(%rbp)
movq -0x2a0(%rbp), %rdi
leaq -0x270(%rbp), %rdx
xorl %esi, %esi
callq 0x95e0
cmpl $0x0, %eax
jge 0xad9c
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0xb322
leaq 0x39d9(%rip), %rax      # 0xe77c
movq %rax, -0x270(%rbp)
movq 0x65c7(%rip), %rax      # 0x11378
movq %rax, -0x268(%rbp)
leaq 0x23e1(%rip), %rax      # 0xd1a0
movq %rax, -0x260(%rbp)
movq -0x2a0(%rbp), %rdi
leaq -0x270(%rbp), %rdx
xorl %esi, %esi
callq 0x95e0
cmpl $0x0, %eax
jge 0xadec
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0xb322
leaq 0x3b3f(%rip), %rax      # 0xe932
movq %rax, -0x270(%rbp)
leaq 0x3b6d(%rip), %rax      # 0xe96e
movq %rax, -0x268(%rbp)
leaq 0x3e44(%rip), %rax      # 0xec53
movq %rax, -0x260(%rbp)
leaq 0x2383(%rip), %rax      # 0xd1a0
movq %rax, -0x258(%rbp)
movq -0x2a0(%rbp), %rdi
leaq -0x270(%rbp), %rdx
xorl %esi, %esi
callq 0x95e0
cmpl $0x0, %eax
jge 0xae4a
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0xb322
leaq 0x39d6(%rip), %rax      # 0xe827
movq %rax, -0x270(%rbp)
leaq 0x3dfa(%rip), %rax      # 0xec59
movq %rax, -0x268(%rbp)
leaq 0x2333(%rip), %rax      # 0xd1a0
movq %rax, -0x260(%rbp)
movq -0x2a0(%rbp), %rdi
leaq -0x270(%rbp), %rdx
xorl %esi, %esi
callq 0x95e0
cmpl $0x0, %eax
jge 0xae9a
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0xb322
jmp 0xae9c
leaq 0x656d(%rip), %rdi      # 0x11410
callq 0x8d70
movq 0x64f9(%rip), %rax      # 0x113a8
movq %rax, -0x288(%rbp)
cmpq $0x0, %rax
jne 0xaeda
movq -0x10(%rbp), %rsi
leaq 0x3d98(%rip), %rdi      # 0xec5f
movb $0x0, %al
callq 0x2d40
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0xb322
jmp 0xaedc
cmpq $0x0, -0x288(%rbp)
je 0xb2fb
movq -0x288(%rbp), %rax
cmpl $0x3, 0x8(%rax)
jne 0xaf0b
movq -0x288(%rbp), %rax
movq 0x50(%rax), %rax
movq %rax, -0x288(%rbp)
jmp 0xaedc
movq -0x288(%rbp), %rax
cmpq $0x0, (%rax)
jne 0xaf44
movq -0x10(%rbp), %rsi
movq -0x288(%rbp), %rax
movq 0x38(%rax), %rdx
leaq 0x3d61(%rip), %rdi      # 0xec8f
movb $0x0, %al
callq 0x2d40
movl -0x278(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x278(%rbp)
movq $0x0, -0x290(%rbp)
movq -0x288(%rbp), %rax
cmpq $0x0, 0x10(%rax)
je 0xafb9
movq -0x288(%rbp), %rax
movq 0x10(%rax), %rax
movq (%rax), %rax
movq %rax, -0x2a8(%rbp)
movq -0x290(%rbp), %rcx
movq -0x288(%rbp), %rax
movq 0x10(%rax), %rax
movq %rcx, (%rax)
movq -0x288(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x290(%rbp)
cmpq $0x0, -0x2a8(%rbp)
jne 0xafa5
jmp 0xafb9
movq -0x2a8(%rbp), %rcx
movq -0x288(%rbp), %rax
movq %rcx, 0x10(%rax)
jmp 0xaf4f
cmpq $0x0, -0x290(%rbp)
je 0xb126
movq -0x290(%rbp), %rax
movzbl 0x10(%rax), %eax
addl $0x1, %eax
movl %eax, -0x2b4(%rbp)
movq -0x290(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x2b0(%rbp)
xorl %eax, %eax
cmpq $0x0, -0x2b0(%rbp)
movb %al, -0x2d9(%rbp)
je 0xb00e
cmpl $0x1, -0x2b4(%rbp)
setg %al
movb %al, -0x2d9(%rbp)
movb -0x2d9(%rbp), %al
testb $0x1, %al
jne 0xb01a
jmp 0xb07c
movq -0x2b0(%rbp), %rax
movzbl 0x10(%rax), %eax
addl $0x1, %eax
movl %eax, -0x2c0(%rbp)
cmpl $0x0, -0x2c0(%rbp)
je 0xb064
movl -0x2b4(%rbp), %eax
cltd
idivl -0x2c0(%rbp)
movl %edx, -0x2bc(%rbp)
movl -0x2c0(%rbp), %eax
movl %eax, -0x2b4(%rbp)
movl -0x2bc(%rbp), %eax
movl %eax, -0x2c0(%rbp)
jmp 0xb02e
jmp 0xb066
movq -0x2b0(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x2b0(%rbp)
jmp 0xafec
movl $0x0, -0x2b8(%rbp)
movq -0x290(%rbp), %rax
movq %rax, -0x2b0(%rbp)
cmpq $0x0, -0x2b0(%rbp)
je 0xb0ef
movq -0x2b0(%rbp), %rax
movzbl 0x10(%rax), %eax
addl $0x1, %eax
cltd
idivl -0x2b4(%rbp)
subl $0x1, %eax
movb %al, %cl
movq -0x2b0(%rbp), %rax
movb %cl, 0x11(%rax)
movq -0x2b0(%rbp), %rax
movzbl 0x11(%rax), %eax
addl $0x1, %eax
addl -0x2b8(%rbp), %eax
movl %eax, -0x2b8(%rbp)
movq -0x2b0(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x2b0(%rbp)
jmp 0xb094
movslq -0x2b8(%rbp), %rdi
movl $0x8, %esi
callq 0x2210
movq %rax, %rcx
movq -0x288(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x288(%rbp), %rdi
callq 0xb3a0
movq -0x288(%rbp), %rdi
callq 0xb410
movq -0x288(%rbp), %rax
cmpq $0x0, 0x70(%rax)
jne 0xb15e
movq 0x61c5(%rip), %rcx      # 0x11300
movq -0x288(%rbp), %rax
movq %rcx, 0x70(%rax)
movq 0x61b3(%rip), %rdi      # 0x11300
callq 0x2120
movl %eax, %ecx
movq -0x288(%rbp), %rax
movl %ecx, 0x78(%rax)
movq -0x288(%rbp), %rax
cmpq $0x0, 0x80(%rax)
jne 0xb19f
movq 0x6192(%rip), %rcx      # 0x11308
movq -0x288(%rbp), %rax
movq %rcx, 0x80(%rax)
movq 0x617d(%rip), %rdi      # 0x11308
callq 0x2120
movl %eax, %ecx
movq -0x288(%rbp), %rax
movl %ecx, 0x88(%rax)
movq -0x288(%rbp), %rax
cmpq $0x0, 0x90(%rax)
jne 0xb1e0
movq 0x6159(%rip), %rcx      # 0x11310
movq -0x288(%rbp), %rax
movq %rcx, 0x90(%rax)
movq 0x6144(%rip), %rdi      # 0x11310
callq 0x2120
movl %eax, %ecx
movq -0x288(%rbp), %rax
movl %ecx, 0x98(%rax)
movq -0x288(%rbp), %rax
cmpq $0x0, 0xa0(%rax)
jne 0xb221
movq 0x6120(%rip), %rcx      # 0x11318
movq -0x288(%rbp), %rax
movq %rcx, 0xa0(%rax)
movq 0x610b(%rip), %rdi      # 0x11318
callq 0x2120
movl %eax, %ecx
movq -0x288(%rbp), %rax
movl %ecx, 0xa8(%rax)
movq -0x288(%rbp), %rax
cmpq $0x0, 0xb0(%rax)
jne 0xb262
movq 0x60e7(%rip), %rcx      # 0x11320
movq -0x288(%rbp), %rax
movq %rcx, 0xb0(%rax)
movq 0x60d2(%rip), %rdi      # 0x11320
callq 0x2120
movl %eax, %ecx
movq -0x288(%rbp), %rax
movl %ecx, 0xb8(%rax)
movq -0x288(%rbp), %rax
cmpq $0x0, 0xc0(%rax)
jne 0xb2a3
movq 0x60ae(%rip), %rcx      # 0x11328
movq -0x288(%rbp), %rax
movq %rcx, 0xc0(%rax)
movq 0x6099(%rip), %rdi      # 0x11328
callq 0x2120
movl %eax, %ecx
movq -0x288(%rbp), %rax
movl %ecx, 0xc8(%rax)
movq -0x288(%rbp), %rax
cmpq $0x0, 0xd0(%rax)
jne 0xb2e4
movq 0x6075(%rip), %rcx      # 0x11330
movq -0x288(%rbp), %rax
movq %rcx, 0xd0(%rax)
movq 0x6060(%rip), %rdi      # 0x11330
callq 0x2120
movl %eax, %ecx
movq -0x288(%rbp), %rax
movl %ecx, 0xd8(%rax)
movq -0x288(%rbp), %rax
movq 0x50(%rax), %rax
movq %rax, -0x288(%rbp)
jmp 0xaedc
cmpl $0x0, -0x278(%rbp)
jle 0xb31b
leaq 0x3a0c(%rip), %rdi      # 0xed17
movb $0x0, %al
callq 0x2d40
movl $0xffffffff, -0x4(%rbp) # imm = 0xFFFFFFFF
jmp 0xb322
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x2e0, %rsp            # imm = 0x2E0
popq %rbp
retq
nop