// File: /workspace/github_c_makefile_star2_O0/haxlang[P]hax/haxUnixAZ.c
// Function: Hax_FileCmd
int
Hax_FileCmd(
    ClientData clientData,		/* Unix ClientData */
    Hax_Interp *interp,			/* Current interpreter. */
    int argc,				/* Number of arguments. */
    char **argv				/* Argument strings. */)
{
    char *p;
    int length, statOp;
    int mode = 0;			/* Initialized only to prevent
					 * compiler warning message. */
    struct stat statBuf;
    char *fileName, c;

    if (argc < 3) {
	Hax_AppendResult(interp, "wrong # args: should be \"", argv[0],
		" option name ?arg ...?\"", (char *) NULL);
	return HAX_ERROR;
    }
    c = argv[1][0];
    length = strlen(argv[1]);

    /*
     * First handle operations on the file name.
     */

    fileName = Hax_TildeSubst(interp, clientData, argv[2]);
    if (fileName == NULL) {
	return HAX_ERROR;
    }
    if ((c == 'd') && (strncmp(argv[1], "dirname", length) == 0)) {
	if (argc != 3) {
	    argv[1] = (char *) "dirname";
	    not3Args:
	    Hax_AppendResult(interp, "wrong # args: should be \"", argv[0],
		    " ", argv[1], " name\"", (char *) NULL);
	    return HAX_ERROR;
	}
	p = strrchr(fileName, '/');
	if (p == NULL) {
	    interp->result = (char *) ".";
	} else if (p == fileName) {
	    interp->result = (char *) "/";
	} else {
	    *p = 0;
	    Hax_SetResult(interp, fileName, HAX_VOLATILE);
	    *p = '/';
	}
	return HAX_OK;
    } else if ((c == 'r') && (strncmp(argv[1], "rootname", length) == 0)
	    && (length >= 2)) {
	char *lastSlash;

	if (argc != 3) {
	    argv[1] = (char *) "rootname";
	    goto not3Args;
	}
	p = strrchr(fileName, '.');
	lastSlash = strrchr(fileName, '/');
	if ((p == NULL) || ((lastSlash != NULL) && (lastSlash > p))) {
	    Hax_SetResult(interp, fileName, HAX_VOLATILE);
	} else {
	    *p = 0;
	    Hax_SetResult(interp, fileName, HAX_VOLATILE);
	    *p = '.';
	}
	return HAX_OK;
    } else if ((c == 'e') && (strncmp(argv[1], "extension", length) == 0)
	    && (length >= 3)) {
	char *lastSlash;

	if (argc != 3) {
	    argv[1] = (char *) "extension";
	    goto not3Args;
	}
	p = strrchr(fileName, '.');
	lastSlash = strrchr(fileName, '/');
	if ((p != NULL) && ((lastSlash == NULL) || (lastSlash < p))) {
	    Hax_SetResult(interp, p, HAX_VOLATILE);
	}
	return HAX_OK;
    } else if ((c == 't') && (strncmp(argv[1], "tail", length) == 0)
	    && (length >= 2)) {
	if (argc != 3) {
	    argv[1] = (char *) "tail";
	    goto not3Args;
	}
	p = strrchr(fileName, '/');
	if (p != NULL) {
	    Hax_SetResult(interp, p+1, HAX_VOLATILE);
	} else {
	    Hax_SetResult(interp, fileName, HAX_VOLATILE);
	}
	return HAX_OK;
    }

    /*
     * Next, handle operations that can be satisfied with the "access"
     * kernel call.
     */

    if (fileName == NULL) {
	return HAX_ERROR;
    }
    if ((c == 'r') && (strncmp(argv[1], "readable", length) == 0)
	    && (length >= 5)) {
	if (argc != 3) {
	    argv[1] = (char *) "readable";
	    goto not3Args;
	}
	mode = R_OK;
	checkAccess:
	if (access(fileName, mode) == -1) {
	    interp->result = (char *) "0";
	} else {
	    interp->result = (char *) "1";
	}
	return HAX_OK;
    } else if ((c == 'w') && (strncmp(argv[1], "writable", length) == 0)) {
	if (argc != 3) {
	    argv[1] = (char *) "writable";
	    goto not3Args;
	}
	mode = W_OK;
	goto checkAccess;
    } else if ((c == 'e') && (strncmp(argv[1], "executable", length) == 0)
	    && (length >= 3)) {
	if (argc != 3) {
	    argv[1] = (char *) "executable";
	    goto not3Args;
	}
	mode = X_OK;
	goto checkAccess;
    } else if ((c == 'e') && (strncmp(argv[1], "exists", length) == 0)
	    && (length >= 3)) {
	if (argc != 3) {
	    argv[1] = (char *) "exists";
	    goto not3Args;
	}
	mode = F_OK;
	goto checkAccess;
    }

    /*
     * Lastly, check stuff that requires the file to be stat-ed.
     */

    if ((c == 'a') && (strncmp(argv[1], "atime", length) == 0)) {
	if (argc != 3) {
	    argv[1] = (char *) "atime";
	    goto not3Args;
	}
	if (stat(fileName, &statBuf) == -1) {
	    goto badStat;
	}
	sprintf(interp->result, "%ld", statBuf.st_atime);
	return HAX_OK;
    } else if ((c == 'i') && (strncmp(argv[1], "isdirectory", length) == 0)
	    && (length >= 3)) {
	if (argc != 3) {
	    argv[1] = (char *) "isdirectory";
	    goto not3Args;
	}
	statOp = 2;
    } else if ((c == 'i') && (strncmp(argv[1], "isfile", length) == 0)
	    && (length >= 3)) {
	if (argc != 3) {
	    argv[1] = (char *) "isfile";
	    goto not3Args;
	}
	statOp = 1;
    } else if ((c == 'l') && (strncmp(argv[1], "lstat", length) == 0)) {
	if (argc != 4) {
	    Hax_AppendResult(interp, "wrong # args: should be \"", argv[0],
		    " lstat name varName\"", (char *) NULL);
	    return HAX_ERROR;
	}

	if (lstat(fileName, &statBuf) == -1) {
	    Hax_AppendResult(interp, "couldn't lstat \"", argv[2],
		    "\": ", Hax_UnixError(interp), (char *) NULL);
	    return HAX_ERROR;
	}
	return StoreStatData(interp, argv[3], &statBuf);
    } else if ((c == 'm') && (strncmp(argv[1], "mtime", length) == 0)) {
	if (argc != 3) {
	    argv[1] = (char *) "mtime";
	    goto not3Args;
	}
	if (stat(fileName, &statBuf) == -1) {
	    goto badStat;
	}
	sprintf(interp->result, "%ld", statBuf.st_mtime);
	return HAX_OK;
    } else if ((c == 'o') && (strncmp(argv[1], "owned", length) == 0)) {
	if (argc != 3) {
	    argv[1] = (char *) "owned";
	    goto not3Args;
	}
	statOp = 0;
    /*
     * This option is only included if symbolic links exist on this system
     * (in which case S_IFLNK should be defined).
     */
    } else if ((c == 'r') && (strncmp(argv[1], "readlink", length) == 0)
	    && (length >= 5)) {
	char linkValue[MAXPATHLEN+1];
	int linkLength;

	if (argc != 3) {
	    argv[1] = (char *) "readlink";
	    goto not3Args;
	}
	linkLength = readlink(fileName, linkValue, sizeof(linkValue) - 1);
	if (linkLength == -1) {
	    Hax_AppendResult(interp, "couldn't readlink \"", argv[2],
		    "\": ", Hax_UnixError(interp), (char *) NULL);
	    return HAX_ERROR;
	}
	linkValue[linkLength] = 0;
	Hax_SetResult(interp, linkValue, HAX_VOLATILE);
	return HAX_OK;
    } else if ((c == 's') && (strncmp(argv[1], "size", length) == 0)
	    && (length >= 2)) {
	if (argc != 3) {
	    argv[1] = (char *) "size";
	    goto not3Args;
	}
	if (stat(fileName, &statBuf) == -1) {
	    goto badStat;
	}
	sprintf(interp->result, "%ld", statBuf.st_size);
	return HAX_OK;
    } else if ((c == 's') && (strncmp(argv[1], "stat", length) == 0)
	    && (length >= 2)) {
	if (argc != 4) {
	    Hax_AppendResult(interp, "wrong # args: should be \"", argv[0],
		    " stat name varName\"", (char *) NULL);
	    return HAX_ERROR;
	}

	if (stat(fileName, &statBuf) == -1) {
	    badStat:
	    Hax_AppendResult(interp, "couldn't stat \"", argv[2],
		    "\": ", Hax_UnixError(interp), (char *) NULL);
	    return HAX_ERROR;
	}
	return StoreStatData(interp, argv[3], &statBuf);
    } else if ((c == 't') && (strncmp(argv[1], "type", length) == 0)
	    && (length >= 2)) {
	if (argc != 3) {
	    argv[1] = (char *) "type";
	    goto not3Args;
	}
	if (lstat(fileName, &statBuf) == -1) {
	    goto badStat;
	}
	interp->result = GetFileType((int) statBuf.st_mode);
	return HAX_OK;
    } else {
	Hax_AppendResult(interp, "bad option \"", argv[1],
		"\": should be atime, dirname, executable, exists, ",
		"extension, isdirectory, isfile, lstat, mtime, owned, ",
		"readable, ",
		"readlink, ",
		"root, size, stat, tail, type, ",
		"or writable",
		(char *) NULL);
	return HAX_ERROR;
    }
    if (stat(fileName, &statBuf) == -1) {
	interp->result = (char *) "0";
	return HAX_OK;
    }
    switch (statOp) {
	case 0:
	    mode = (geteuid() == statBuf.st_uid);
	    break;
	case 1:
	    mode = S_ISREG(statBuf.st_mode);
	    break;
	case 2:
	    mode = S_ISDIR(statBuf.st_mode);
	    break;
    }
    if (mode) {
	interp->result = (char *) "1";
    } else {
	interp->result = (char *) "0";
    }
    return HAX_OK;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %rbx
subq $0x1158, %rsp           # imm = 0x1158
movq %rdi, -0x18(%rbp)
movq %rsi, -0x20(%rbp)
movl %edx, -0x24(%rbp)
movq %rcx, -0x30(%rbp)
movl $0x0, -0x44(%rbp)
cmpl $0x3, -0x24(%rbp)
jge 0x5a39
movq -0x20(%rbp), %rdi
movq -0x30(%rbp), %rax
movq (%rax), %rdx
leaq 0x5729(%rip), %rsi      # 0xb143
leaq 0x585f(%rip), %rcx      # 0xb280
xorl %eax, %eax
movl %eax, %r8d
movb $0x0, %al
callq 0x3510
movl $0x1, -0xc(%rbp)
jmp 0x66ff
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rax
movb (%rax), %al
movb %al, -0xe1(%rbp)
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
callq 0x3190
movl %eax, -0x3c(%rbp)
movq -0x20(%rbp), %rdi
movq -0x18(%rbp), %rsi
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rdx
callq 0x3570
movq %rax, -0xe0(%rbp)
cmpq $0x0, -0xe0(%rbp)
jne 0x5a8b
movl $0x1, -0xc(%rbp)
jmp 0x66ff
movsbl -0xe1(%rbp), %eax
cmpl $0x64, %eax
jne 0x5b92
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
movslq -0x3c(%rbp), %rdx
leaq 0x57ea(%rip), %rsi      # 0xb298
callq 0x30b0
cmpl $0x0, %eax
jne 0x5b92
cmpl $0x3, -0x24(%rbp)
je 0x5b16
movq -0x30(%rbp), %rax
leaq 0x57cb(%rip), %rcx      # 0xb298
movq %rcx, 0x8(%rax)
movq -0x20(%rbp), %rdi
movq -0x30(%rbp), %rax
movq (%rax), %rdx
movq -0x30(%rbp), %rax
movq 0x8(%rax), %r8
leaq 0x5658(%rip), %rsi      # 0xb143
leaq 0x58f4(%rip), %rcx      # 0xb3e6
leaq 0x558f(%rip), %r9       # 0xb088
xorl %eax, %eax
movq $0x0, (%rsp)
movb $0x0, %al
callq 0x3510
movl $0x1, -0xc(%rbp)
jmp 0x66ff
movq -0xe0(%rbp), %rdi
movl $0x2f, %esi
callq 0x3200
movq %rax, -0x38(%rbp)
cmpq $0x0, -0x38(%rbp)
jne 0x5b42
movq -0x20(%rbp), %rax
leaq 0x5692(%rip), %rcx      # 0xb1cf
movq %rcx, (%rax)
jmp 0x5b86
movq -0x38(%rbp), %rax
cmpq -0xe0(%rbp), %rax
jne 0x5b5f
movq -0x20(%rbp), %rax
leaq 0x562f(%rip), %rcx      # 0xb189
movq %rcx, (%rax)
jmp 0x5b84
movq -0x38(%rbp), %rax
movb $0x0, (%rax)
movq -0x20(%rbp), %rdi
movq -0xe0(%rbp), %rsi
movq $-0x1, %rdx
callq 0x34d0
movq -0x38(%rbp), %rax
movb $0x2f, (%rax)
jmp 0x5b86
movl $0x0, -0xc(%rbp)
jmp 0x66ff
movsbl -0xe1(%rbp), %eax
cmpl $0x72, %eax
jne 0x5c7c
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
movslq -0x3c(%rbp), %rdx
leaq 0x56eb(%rip), %rsi      # 0xb2a0
callq 0x30b0
cmpl $0x0, %eax
jne 0x5c7c
cmpl $0x2, -0x3c(%rbp)
jl 0x5c7c
cmpl $0x3, -0x24(%rbp)
je 0x5be7
movq -0x30(%rbp), %rax
leaq 0x56c2(%rip), %rcx      # 0xb2a0
movq %rcx, 0x8(%rax)
jmp 0x5ad1
movq -0xe0(%rbp), %rdi
movl $0x2e, %esi
callq 0x3200
movq %rax, -0x38(%rbp)
movq -0xe0(%rbp), %rdi
movl $0x2f, %esi
callq 0x3200
movq %rax, -0xf0(%rbp)
cmpq $0x0, -0x38(%rbp)
je 0x5c32
cmpq $0x0, -0xf0(%rbp)
je 0x5c4b
movq -0xf0(%rbp), %rax
cmpq -0x38(%rbp), %rax
jbe 0x5c4b
movq -0x20(%rbp), %rdi
movq -0xe0(%rbp), %rsi
movq $-0x1, %rdx
callq 0x34d0
jmp 0x5c70
movq -0x38(%rbp), %rax
movb $0x0, (%rax)
movq -0x20(%rbp), %rdi
movq -0xe0(%rbp), %rsi
movq $-0x1, %rdx
callq 0x34d0
movq -0x38(%rbp), %rax
movb $0x2e, (%rax)
movl $0x0, -0xc(%rbp)
jmp 0x66ff
movsbl -0xe1(%rbp), %eax
cmpl $0x65, %eax
jne 0x5d3c
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
movslq -0x3c(%rbp), %rdx
leaq 0x560a(%rip), %rsi      # 0xb2a9
callq 0x30b0
cmpl $0x0, %eax
jne 0x5d3c
cmpl $0x3, -0x3c(%rbp)
jl 0x5d3c
cmpl $0x3, -0x24(%rbp)
je 0x5cd1
movq -0x30(%rbp), %rax
leaq 0x55e1(%rip), %rcx      # 0xb2a9
movq %rcx, 0x8(%rax)
jmp 0x5ad1
movq -0xe0(%rbp), %rdi
movl $0x2e, %esi
callq 0x3200
movq %rax, -0x38(%rbp)
movq -0xe0(%rbp), %rdi
movl $0x2f, %esi
callq 0x3200
movq %rax, -0xf8(%rbp)
cmpq $0x0, -0x38(%rbp)
je 0x5d30
cmpq $0x0, -0xf8(%rbp)
je 0x5d1c
movq -0xf8(%rbp), %rax
cmpq -0x38(%rbp), %rax
jae 0x5d30
movq -0x20(%rbp), %rdi
movq -0x38(%rbp), %rsi
movq $-0x1, %rdx
callq 0x34d0
movl $0x0, -0xc(%rbp)
jmp 0x66ff
movsbl -0xe1(%rbp), %eax
cmpl $0x74, %eax
jne 0x5de2
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
movslq -0x3c(%rbp), %rdx
leaq 0x5554(%rip), %rsi      # 0xb2b3
callq 0x30b0
cmpl $0x0, %eax
jne 0x5de2
cmpl $0x2, -0x3c(%rbp)
jl 0x5de2
cmpl $0x3, -0x24(%rbp)
je 0x5d89
movq -0x30(%rbp), %rax
leaq 0x5533(%rip), %rcx      # 0xb2b3
movq %rcx, 0x8(%rax)
jmp 0x5ad1
movq -0xe0(%rbp), %rdi
movl $0x2f, %esi
callq 0x3200
movq %rax, -0x38(%rbp)
cmpq $0x0, -0x38(%rbp)
je 0x5dbf
movq -0x20(%rbp), %rdi
movq -0x38(%rbp), %rsi
addq $0x1, %rsi
movq $-0x1, %rdx
callq 0x34d0
jmp 0x5dd6
movq -0x20(%rbp), %rdi
movq -0xe0(%rbp), %rsi
movq $-0x1, %rdx
callq 0x34d0
movl $0x0, -0xc(%rbp)
jmp 0x66ff
jmp 0x5de4
jmp 0x5de6
jmp 0x5de8
cmpq $0x0, -0xe0(%rbp)
jne 0x5dfe
movl $0x1, -0xc(%rbp)
jmp 0x66ff
movsbl -0xe1(%rbp), %eax
cmpl $0x72, %eax
jne 0x5e90
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
movslq -0x3c(%rbp), %rdx
leaq 0x5497(%rip), %rsi      # 0xb2b8
callq 0x30b0
cmpl $0x0, %eax
jne 0x5e90
cmpl $0x5, -0x3c(%rbp)
jl 0x5e90
cmpl $0x3, -0x24(%rbp)
je 0x5e4b
movq -0x30(%rbp), %rax
leaq 0x5476(%rip), %rcx      # 0xb2b8
movq %rcx, 0x8(%rax)
jmp 0x5ad1
movl $0x4, -0x44(%rbp)
movq -0xe0(%rbp), %rdi
movl -0x44(%rbp), %esi
callq 0x34f0
cmpl $-0x1, %eax
jne 0x5e76
movq -0x20(%rbp), %rax
leaq 0x53dd(%rip), %rcx      # 0xb24e
movq %rcx, (%rax)
jmp 0x5e84
movq -0x20(%rbp), %rax
leaq 0x6338(%rip), %rcx      # 0xc1b9
movq %rcx, (%rax)
movl $0x0, -0xc(%rbp)
jmp 0x66ff
movsbl -0xe1(%rbp), %eax
cmpl $0x77, %eax
jne 0x5edf
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
movslq -0x3c(%rbp), %rdx
leaq 0x5571(%rip), %rsi      # 0xb420
callq 0x30b0
cmpl $0x0, %eax
jne 0x5edf
cmpl $0x3, -0x24(%rbp)
je 0x5ed3
movq -0x30(%rbp), %rax
leaq 0x5556(%rip), %rcx      # 0xb420
movq %rcx, 0x8(%rax)
jmp 0x5ad1
movl $0x2, -0x44(%rbp)
jmp 0x5e52
movsbl -0xe1(%rbp), %eax
cmpl $0x65, %eax
jne 0x5f34
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
movslq -0x3c(%rbp), %rdx
leaq 0x53c3(%rip), %rsi      # 0xb2c1
callq 0x30b0
cmpl $0x0, %eax
jne 0x5f34
cmpl $0x3, -0x3c(%rbp)
jl 0x5f34
cmpl $0x3, -0x24(%rbp)
je 0x5f28
movq -0x30(%rbp), %rax
leaq 0x53a2(%rip), %rcx      # 0xb2c1
movq %rcx, 0x8(%rax)
jmp 0x5ad1
movl $0x1, -0x44(%rbp)
jmp 0x5e52
movsbl -0xe1(%rbp), %eax
cmpl $0x65, %eax
jne 0x5f89
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
movslq -0x3c(%rbp), %rdx
leaq 0x5379(%rip), %rsi      # 0xb2cc
callq 0x30b0
cmpl $0x0, %eax
jne 0x5f89
cmpl $0x3, -0x3c(%rbp)
jl 0x5f89
cmpl $0x3, -0x24(%rbp)
je 0x5f7d
movq -0x30(%rbp), %rax
leaq 0x5358(%rip), %rcx      # 0xb2cc
movq %rcx, 0x8(%rax)
jmp 0x5ad1
movl $0x0, -0x44(%rbp)
jmp 0x5e52
jmp 0x5f8b
jmp 0x5f8d
jmp 0x5f8f
movsbl -0xe1(%rbp), %eax
cmpl $0x61, %eax
jne 0x6017
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
movslq -0x3c(%rbp), %rdx
leaq 0x5325(%rip), %rsi      # 0xb2d3
callq 0x30b0
cmpl $0x0, %eax
jne 0x6017
cmpl $0x3, -0x24(%rbp)
je 0x5fd2
movq -0x30(%rbp), %rax
leaq 0x530a(%rip), %rcx      # 0xb2d3
movq %rcx, 0x8(%rax)
jmp 0x5ad1
movq -0xe0(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0x3380
cmpl $-0x1, %eax
jne 0x5fef
jmp 0x64b5
movq -0x20(%rbp), %rax
movq (%rax), %rdi
movq -0x90(%rbp), %rdx
leaq 0x52d5(%rip), %rsi      # 0xb2d9
movb $0x0, %al
callq 0x35a0
movl $0x0, -0xc(%rbp)
jmp 0x66ff
movsbl -0xe1(%rbp), %eax
cmpl $0x69, %eax
jne 0x606c
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
movslq -0x3c(%rbp), %rdx
leaq 0x52a7(%rip), %rsi      # 0xb2dd
callq 0x30b0
cmpl $0x0, %eax
jne 0x606c
cmpl $0x3, -0x3c(%rbp)
jl 0x606c
cmpl $0x3, -0x24(%rbp)
je 0x6060
movq -0x30(%rbp), %rax
leaq 0x5286(%rip), %rcx      # 0xb2dd
movq %rcx, 0x8(%rax)
jmp 0x5ad1
movl $0x2, -0x40(%rbp)
jmp 0x6627
movsbl -0xe1(%rbp), %eax
cmpl $0x69, %eax
jne 0x60c1
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
movslq -0x3c(%rbp), %rdx
leaq 0x525e(%rip), %rsi      # 0xb2e9
callq 0x30b0
cmpl $0x0, %eax
jne 0x60c1
cmpl $0x3, -0x3c(%rbp)
jl 0x60c1
cmpl $0x3, -0x24(%rbp)
je 0x60b5
movq -0x30(%rbp), %rax
leaq 0x523d(%rip), %rcx      # 0xb2e9
movq %rcx, 0x8(%rax)
jmp 0x5ad1
movl $0x1, -0x40(%rbp)
jmp 0x6625
movsbl -0xe1(%rbp), %eax
cmpl $0x6c, %eax
jne 0x61bb
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
movslq -0x3c(%rbp), %rdx
leaq 0x520c(%rip), %rsi      # 0xb2f0
callq 0x30b0
cmpl $0x0, %eax
jne 0x61bb
cmpl $0x4, -0x24(%rbp)
je 0x6129
movq -0x20(%rbp), %rdi
movq -0x30(%rbp), %rax
movq (%rax), %rdx
leaq 0x5039(%rip), %rsi      # 0xb143
leaq 0x51e5(%rip), %rcx      # 0xb2f6
xorl %eax, %eax
movl %eax, %r8d
movb $0x0, %al
callq 0x3510
movl $0x1, -0xc(%rbp)
jmp 0x66ff
movq -0xe0(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0x3300
cmpl $-0x1, %eax
jne 0x619b
movq -0x20(%rbp), %rax
movq %rax, -0x1118(%rbp)
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x1110(%rbp)
movq -0x20(%rbp), %rdi
callq 0x31b0
movq -0x1118(%rbp), %rdi
movq -0x1110(%rbp), %rdx
movq %rax, %r8
leaq 0x518f(%rip), %rsi      # 0xb30b
leaq 0x5068(%rip), %rcx      # 0xb1eb
xorl %eax, %eax
movl %eax, %r9d
movb $0x0, %al
callq 0x3510
movl $0x1, -0xc(%rbp)
jmp 0x66ff
movq -0x20(%rbp), %rdi
movq -0x30(%rbp), %rax
movq 0x18(%rax), %rsi
leaq -0xd8(%rbp), %rdx
callq 0x6710
movl %eax, -0xc(%rbp)
jmp 0x66ff
movsbl -0xe1(%rbp), %eax
cmpl $0x6d, %eax
jne 0x6240
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
movslq -0x3c(%rbp), %rdx
leaq 0x5142(%rip), %rsi      # 0xb31c
callq 0x30b0
cmpl $0x0, %eax
jne 0x6240
cmpl $0x3, -0x24(%rbp)
je 0x61fe
movq -0x30(%rbp), %rax
leaq 0x5127(%rip), %rcx      # 0xb31c
movq %rcx, 0x8(%rax)
jmp 0x5ad1
movq -0xe0(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0x3380
cmpl $-0x1, %eax
jne 0x621b
jmp 0x64b5
movq -0x20(%rbp), %rax
movq (%rax), %rdi
movq -0x80(%rbp), %rdx
leaq 0x50ac(%rip), %rsi      # 0xb2d9
movb $0x0, %al
callq 0x35a0
movl $0x0, -0xc(%rbp)
jmp 0x66ff
movsbl -0xe1(%rbp), %eax
cmpl $0x6f, %eax
jne 0x628f
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
movslq -0x3c(%rbp), %rdx
leaq 0x50c3(%rip), %rsi      # 0xb322
callq 0x30b0
cmpl $0x0, %eax
jne 0x628f
cmpl $0x3, -0x24(%rbp)
je 0x6283
movq -0x30(%rbp), %rax
leaq 0x50a8(%rip), %rcx      # 0xb322
movq %rcx, 0x8(%rax)
jmp 0x5ad1
movl $0x0, -0x40(%rbp)
jmp 0x661f
movsbl -0xe1(%rbp), %eax
cmpl $0x72, %eax
jne 0x6397
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
movslq -0x3c(%rbp), %rdx
leaq 0x5076(%rip), %rsi      # 0xb328
callq 0x30b0
cmpl $0x0, %eax
jne 0x6397
cmpl $0x5, -0x3c(%rbp)
jl 0x6397
cmpl $0x3, -0x24(%rbp)
je 0x62e4
movq -0x30(%rbp), %rax
leaq 0x504d(%rip), %rcx      # 0xb328
movq %rcx, 0x8(%rax)
jmp 0x5ad1
movq -0xe0(%rbp), %rdi
leaq -0x1100(%rbp), %rsi
movl $0x1000, %edx           # imm = 0x1000
callq 0x3140
movl %eax, -0x1104(%rbp)
cmpl $-0x1, -0x1104(%rbp)
jne 0x6365
movq -0x20(%rbp), %rax
movq %rax, -0x1128(%rbp)
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x1120(%rbp)
movq -0x20(%rbp), %rdi
callq 0x31b0
movq -0x1128(%rbp), %rdi
movq -0x1120(%rbp), %rdx
movq %rax, %r8
leaq 0x4feb(%rip), %rsi      # 0xb331
leaq 0x4e9e(%rip), %rcx      # 0xb1eb
xorl %eax, %eax
movl %eax, %r9d
movb $0x0, %al
callq 0x3510
movl $0x1, -0xc(%rbp)
jmp 0x66ff
movslq -0x1104(%rbp), %rax
movb $0x0, -0x1100(%rbp,%rax)
movq -0x20(%rbp), %rdi
leaq -0x1100(%rbp), %rsi
movq $-0x1, %rdx
callq 0x34d0
movl $0x0, -0xc(%rbp)
jmp 0x66ff
movsbl -0xe1(%rbp), %eax
cmpl $0x73, %eax
jne 0x6429
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
movslq -0x3c(%rbp), %rdx
leaq 0x4f8b(%rip), %rsi      # 0xb345
callq 0x30b0
cmpl $0x0, %eax
jne 0x6429
cmpl $0x2, -0x3c(%rbp)
jl 0x6429
cmpl $0x3, -0x24(%rbp)
je 0x63e4
movq -0x30(%rbp), %rax
leaq 0x4f6a(%rip), %rcx      # 0xb345
movq %rcx, 0x8(%rax)
jmp 0x5ad1
movq -0xe0(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0x3380
cmpl $-0x1, %eax
jne 0x6401
jmp 0x64b5
movq -0x20(%rbp), %rax
movq (%rax), %rdi
movq -0xa8(%rbp), %rdx
leaq 0x4ec3(%rip), %rsi      # 0xb2d9
movb $0x0, %al
callq 0x35a0
movl $0x0, -0xc(%rbp)
jmp 0x66ff
movsbl -0xe1(%rbp), %eax
cmpl $0x73, %eax
jne 0x652f
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
movslq -0x3c(%rbp), %rdx
leaq 0x4ea5(%rip), %rsi      # 0xb2f1
callq 0x30b0
cmpl $0x0, %eax
jne 0x652f
cmpl $0x2, -0x3c(%rbp)
jl 0x652f
cmpl $0x4, -0x24(%rbp)
je 0x649b
movq -0x20(%rbp), %rdi
movq -0x30(%rbp), %rax
movq (%rax), %rdx
leaq 0x4cc7(%rip), %rsi      # 0xb143
leaq 0x4ec7(%rip), %rcx      # 0xb34a
xorl %eax, %eax
movl %eax, %r8d
movb $0x0, %al
callq 0x3510
movl $0x1, -0xc(%rbp)
jmp 0x66ff
movq -0xe0(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0x3380
cmpl $-0x1, %eax
jne 0x650f
jmp 0x64b5
movq -0x20(%rbp), %rax
movq %rax, -0x1138(%rbp)
movq -0x30(%rbp), %rax
movq 0x10(%rax), %rax
movq %rax, -0x1130(%rbp)
movq -0x20(%rbp), %rdi
callq 0x31b0
movq -0x1138(%rbp), %rdi
movq -0x1130(%rbp), %rdx
movq %rax, %r8
leaq 0x4e6e(%rip), %rsi      # 0xb35e
leaq 0x4cf4(%rip), %rcx      # 0xb1eb
xorl %eax, %eax
movl %eax, %r9d
movb $0x0, %al
callq 0x3510
movl $0x1, -0xc(%rbp)
jmp 0x66ff
movq -0x20(%rbp), %rdi
movq -0x30(%rbp), %rax
movq 0x18(%rax), %rsi
leaq -0xd8(%rbp), %rdx
callq 0x6710
movl %eax, -0xc(%rbp)
jmp 0x66ff
movsbl -0xe1(%rbp), %eax
cmpl $0x74, %eax
jne 0x65b6
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdi
movslq -0x3c(%rbp), %rdx
leaq 0x4e20(%rip), %rsi      # 0xb36e
callq 0x30b0
cmpl $0x0, %eax
jne 0x65b6
cmpl $0x2, -0x3c(%rbp)
jl 0x65b6
cmpl $0x3, -0x24(%rbp)
je 0x6578
movq -0x30(%rbp), %rax
leaq 0x4dff(%rip), %rcx      # 0xb36e
movq %rcx, 0x8(%rax)
jmp 0x5ad1
movq -0xe0(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0x3300
cmpl $-0x1, %eax
jne 0x6595
jmp 0x64b5
movl -0xc0(%rbp), %edi
callq 0x6a60
movq %rax, %rcx
movq -0x20(%rbp), %rax
movq %rcx, (%rax)
movl $0x0, -0xc(%rbp)
jmp 0x66ff
movq -0x20(%rbp), %rdi
movq -0x30(%rbp), %rax
movq 0x8(%rax), %rdx
leaq 0x4daa(%rip), %rsi      # 0xb373
leaq 0x4db0(%rip), %rcx      # 0xb380
leaq 0x4ddb(%rip), %r8       # 0xb3b2
leaq 0x4e0a(%rip), %r9       # 0xb3e8
leaq 0x4e0e(%rip), %r11      # 0xb3f3
leaq 0x4e12(%rip), %r10      # 0xb3fe
leaq 0x4e2a(%rip), %rax      # 0xb41d
xorl %ebx, %ebx
movq %r11, (%rsp)
movq %r10, 0x8(%rsp)
movq %rax, 0x10(%rsp)
movq $0x0, 0x18(%rsp)
movb $0x0, %al
callq 0x3510
movl $0x1, -0xc(%rbp)
jmp 0x66ff
jmp 0x6621
jmp 0x6623
jmp 0x6625
jmp 0x6627
jmp 0x6629
movq -0xe0(%rbp), %rdi
leaq -0xd8(%rbp), %rsi
callq 0x3380
cmpl $-0x1, %eax
jne 0x665b
movq -0x20(%rbp), %rax
leaq 0x4c02(%rip), %rcx      # 0xb24e
movq %rcx, (%rax)
movl $0x0, -0xc(%rbp)
jmp 0x66ff
movl -0x40(%rbp), %eax
movl %eax, -0x113c(%rbp)
testl %eax, %eax
je 0x6684
jmp 0x666a
movl -0x113c(%rbp), %eax
subl $0x1, %eax
je 0x669c
jmp 0x6677
movl -0x113c(%rbp), %eax
subl $0x2, %eax
je 0x66b9
jmp 0x66d4
callq 0x3260
cmpl -0xbc(%rbp), %eax
sete %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x44(%rbp)
jmp 0x66d4
movl -0xc0(%rbp), %eax
andl $0xf000, %eax           # imm = 0xF000
cmpl $0x8000, %eax           # imm = 0x8000
sete %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x44(%rbp)
jmp 0x66d4
movl -0xc0(%rbp), %eax
andl $0xf000, %eax           # imm = 0xF000
cmpl $0x4000, %eax           # imm = 0x4000
sete %al
andb $0x1, %al
movzbl %al, %eax
movl %eax, -0x44(%rbp)
cmpl $0x0, -0x44(%rbp)
je 0x66ea
movq -0x20(%rbp), %rax
leaq 0x5ad4(%rip), %rcx      # 0xc1b9
movq %rcx, (%rax)
jmp 0x66f8
movq -0x20(%rbp), %rax
leaq 0x4b59(%rip), %rcx      # 0xb24e
movq %rcx, (%rax)
movl $0x0, -0xc(%rbp)
movl -0xc(%rbp), %eax
addq $0x1158, %rsp           # imm = 0x1158
popq %rbx
popq %rbp
retq
nopl (%rax)