// File: /workspace/github_c_makefile_star2_O0/jonof[P]jftekwar/jfbuild/src/cache1d.c
// Function: klistpath
CACHE1D_FIND_REC *klistpath(const char *_path, const char *mask, int type)
{
	CACHE1D_FIND_REC *rec = NULL;
	char *path;
	
	// pathsearchmode == 0: enumerates a path in the virtual filesystem
	// pathsearchmode == 1: enumerates the system filesystem path passed in
	
	path = strdup(_path);
	if (!path) return NULL;

	// we don't need any leading dots and slashes or trailing slashes either
	{
		int i,j;
		for (i=0; path[i] == '.' || toupperlookup[(int)(unsigned char)path[i]] == '/'; ) i++;
		for (j=0; (path[j] = path[i]); j++,i++) ;
		while (j>0 && toupperlookup[(int)(unsigned char)path[j-1]] == '/') j--;
		path[j] = 0;
		//buildprintf("Cleaned up path = \"%s\"\n",path);
	}
	
	if (*path && (type & CACHE1D_FIND_DIR)) {
		if (klistaddentry(&rec, "..", CACHE1D_FIND_DIR, CACHE1D_SOURCE_CURDIR) < 0) goto failure;
	}
	
	if (!(type & CACHE1D_OPT_NOSTACK)) {	// current directory and paths in the search stack
		searchpath_t *search = NULL;
		BDIR *dir;
		struct Bdirent *dirent;
		const char *d = ".";
		int stackdepth = CACHE1D_SOURCE_CURDIR;
		char buf[BMAX_PATH];

		if (pathsearchmode) d = _path;

		do {
			if (!pathsearchmode) {
				strcpy(buf, path);
				if (*path) strcat(buf, "/");
				strcat(buf, d);
			} else strcpy(buf, d);
			dir = Bopendir(buf);
			if (dir) {
				while ((dirent = Breaddir(dir))) {
					if ((dirent->name[0] == '.' && dirent->name[1] == 0) ||
						(dirent->name[0] == '.' && dirent->name[1] == '.' && dirent->name[2] == 0))
						continue;
					if ((type & CACHE1D_FIND_DIR) && !(dirent->mode & BS_IFDIR)) continue;
					if ((type & CACHE1D_FIND_FILE) && (dirent->mode & BS_IFDIR)) continue;
					if (!Bwildmatch(dirent->name, mask)) continue;
					switch (klistaddentry(&rec, dirent->name,
								(dirent->mode & BS_IFDIR) ? CACHE1D_FIND_DIR : CACHE1D_FIND_FILE,
										  stackdepth)) {
						case -1: goto failure;
						//case 1: buildprintf("%s:%s dropped for lower priority\n", d,dirent->name); break;
						//case 0: buildprintf("%s:%s accepted\n", d,dirent->name); break;
						default: break;
					}
				}
				Bclosedir(dir);
			}
			
			if (pathsearchmode) break;

			if (!search) {
				search = searchpathhead;
				stackdepth = CACHE1D_SOURCE_PATH;
			} else {
				search = search->next;
				stackdepth++;
			}
			if (search) d = search->path;
		} while (search);
	}

#ifdef WITHKPLIB
	if (!pathsearchmode) {	// next, zip files
		char buf[BMAX_PATH];
		int i, j, ftype;
		strcpy(buf,path);
		if (*path) strcat(buf,"/");
		strcat(buf,mask);
		for (kzfindfilestart(buf); kzfindfile(buf); ) {
			if (buf[0] != '|') continue;	// local files we don't need
			
			// scan for the end of the string and shift
			// everything left a char in the process
			for (i=1; (buf[i-1]=buf[i]); i++) ;
			i-=2;

			// if there's a slash at the end, this is a directory entry
			if (toupperlookup[(int)(unsigned char)buf[i]] == '/') { ftype = CACHE1D_FIND_DIR; buf[i] = 0; }
			else ftype = CACHE1D_FIND_FILE;

			// skip over the common characters at the beginning of the base path and the zip entry
			for (j=0; buf[j] && path[j]; j++) {
				if (toupperlookup[(int)(unsigned char)path[j] ] == toupperlookup[(int)(unsigned char)buf[j] ]) continue;
				break;
			}
			// we've now hopefully skipped the common path component at the beginning.
			// if that's true, we should be staring at a null byte in path and either any character in buf
			// if j==0, or a slash if j>0
			if ((!path[0] && buf[j]) || (!path[j] && toupperlookup[(int)(unsigned char)buf[j] ] == '/')) {
				if (j>0) j++;
				
				// yep, so now we shift what follows back to the start of buf and while we do that,
				// keep an eye out for any more slashes which would mean this entry has sub-entities
				// and is useless to us.
				for (i = 0; (buf[i] = buf[j]) && toupperlookup[(int)(unsigned char)buf[j]] != '/'; i++,j++) ;
				if (toupperlookup[(int)(unsigned char)buf[j]] == '/') continue;	// damn, try next entry
			} else {
				// if we're here it means we have a situation where:
				//   path = foo
				//   buf = foobar...
				// or
				//   path = foobar
				//   buf = foo...
				// which would mean the entry is higher up in the directory tree and is also useless
				continue;
			}

			if ((type & CACHE1D_FIND_DIR) && ftype != CACHE1D_FIND_DIR) continue;
			if ((type & CACHE1D_FIND_FILE) && ftype != CACHE1D_FIND_FILE) continue;
			
			// the entry is in the clear
			switch (klistaddentry(&rec, buf, ftype, CACHE1D_SOURCE_ZIP)) {
				case -1: goto failure;
				//case 1: buildprintf("<ZIP>:%s dropped for lower priority\n", buf); break;
				//case 0: buildprintf("<ZIP>:%s accepted\n", buf); break;
				default: break;
			}
		}
	}
#endif
	
	// then, grp files
	if (!pathsearchmode && !*path && (type & CACHE1D_FIND_FILE)) {
		char buf[13];
		int i,j;
		buf[12] = 0;
		for (i=0;i<MAXGROUPFILES;i++) {
			if (groupfil[i] == -1) continue;
			for(j=gnumfiles[i]-1;j>=0;j--)
			{
				Bmemcpy(buf,&gfilelist[i][j<<4],12);
				if (!Bwildmatch(buf,mask)) continue;
				switch (klistaddentry(&rec, buf, CACHE1D_FIND_FILE, CACHE1D_SOURCE_GRP)) {
					case -1: goto failure;
					//case 1: buildprintf("<GRP>:%s dropped for lower priority\n", workspace); break;
					//case 0: buildprintf("<GRP>:%s accepted\n", workspace); break;
					default: break;
				}
			}
		}
	}
	
	if (pathsearchmode && (type & CACHE1D_FIND_DRIVE)) {
		char *drives, *drp;
		drives = Bgetsystemdrives();
		if (drives) {
			for (drp=drives; *drp; drp+=strlen(drp)+1) {
				if (klistaddentry(&rec, drp, CACHE1D_FIND_DRIVE, CACHE1D_SOURCE_DRIVE) < 0) {
					free(drives);
					goto failure;
				}
			}
			free(drives);
		}
	}
	
	free(path);
	return rec;
failure:
	free(path);
	klistfree(rec);
	return NULL;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x8a0, %rsp            # imm = 0x8A0
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movl %edx, -0x1c(%rbp)
movq $0x0, -0x28(%rbp)
movq -0x10(%rbp), %rdi
callq 0x6060
movq %rax, -0x30(%rbp)
cmpq $0x0, -0x30(%rbp)
jne 0x30a5f
movq $0x0, -0x8(%rbp)
jmp 0x312de
movl $0x0, -0x34(%rbp)
movq -0x30(%rbp), %rax
movslq -0x34(%rbp), %rcx
movsbl (%rax,%rcx), %ecx
movb $0x1, %al
cmpl $0x2e, %ecx
movb %al, -0x899(%rbp)
je 0x30aa5
movq -0x30(%rbp), %rax
movslq -0x34(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movslq %eax, %rcx
leaq 0xaf96b(%rip), %rax     # 0xe0400
movsbl (%rax,%rcx), %eax
cmpl $0x2f, %eax
sete %al
movb %al, -0x899(%rbp)
movb -0x899(%rbp), %al
testb $0x1, %al
jne 0x30ab1
jmp 0x30abc
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x30a66
movl $0x0, -0x38(%rbp)
movq -0x30(%rbp), %rax
movslq -0x34(%rbp), %rcx
movb (%rax,%rcx), %al
movq -0x30(%rbp), %rcx
movslq -0x38(%rbp), %rdx
movb %al, (%rcx,%rdx)
cmpb $0x0, %al
je 0x30af3
jmp 0x30adf
movl -0x38(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x38(%rbp)
movl -0x34(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x34(%rbp)
jmp 0x30ac3
jmp 0x30af5
xorl %eax, %eax
cmpl $0x0, -0x38(%rbp)
movb %al, -0x89a(%rbp)
jle 0x30b2e
movq -0x30(%rbp), %rax
movl -0x38(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movzbl (%rax,%rcx), %eax
movslq %eax, %rcx
leaq 0xaf8e2(%rip), %rax     # 0xe0400
movsbl (%rax,%rcx), %eax
cmpl $0x2f, %eax
sete %al
movb %al, -0x89a(%rbp)
movb -0x89a(%rbp), %al
testb $0x1, %al
jne 0x30b3a
jmp 0x30b45
movl -0x38(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x38(%rbp)
jmp 0x30af5
movq -0x30(%rbp), %rax
movslq -0x38(%rbp), %rcx
movb $0x0, (%rax,%rcx)
movq -0x30(%rbp), %rax
movsbl (%rax), %eax
cmpl $0x0, %eax
je 0x30b8e
movl -0x1c(%rbp), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0x30b8e
leaq -0x28(%rbp), %rdi
leaq 0x7e74b(%rip), %rsi     # 0xaf2be
movl $0x2, %edx
movl $0x1, %ecx
callq 0x312f0
cmpl $0x0, %eax
jge 0x30b8c
jmp 0x312c4
jmp 0x30b8e
movl -0x1c(%rbp), %eax
andl $0x100, %eax            # imm = 0x100
cmpl $0x0, %eax
jne 0x30da1
movq $0x0, -0x40(%rbp)
leaq 0x7e711(%rip), %rax     # 0xaf2bf
movq %rax, -0x58(%rbp)
movl $0x1, -0x5c(%rbp)
cmpl $0x0, 0x1c06a0(%rip)    # 0x1f1260
je 0x30bca
movq -0x10(%rbp), %rax
movq %rax, -0x58(%rbp)
jmp 0x30bcc
cmpl $0x0, 0x1c068d(%rip)    # 0x1f1260
jne 0x30c13
leaq -0x460(%rbp), %rdi
movq -0x30(%rbp), %rsi
callq 0x63e0
movq -0x30(%rbp), %rax
cmpb $0x0, (%rax)
je 0x30c01
leaq -0x460(%rbp), %rdi
leaq 0x813ef(%rip), %rsi     # 0xb1feb
callq 0x6690
leaq -0x460(%rbp), %rdi
movq -0x58(%rbp), %rsi
callq 0x6690
jmp 0x30c23
leaq -0x460(%rbp), %rdi
movq -0x58(%rbp), %rsi
callq 0x63e0
leaq -0x460(%rbp), %rdi
callq 0x32f40
movq %rax, -0x48(%rbp)
cmpq $0x0, -0x48(%rbp)
je 0x30d45
jmp 0x30c40
movq -0x48(%rbp), %rdi
callq 0x32fd0
movq %rax, -0x50(%rbp)
cmpq $0x0, %rax
je 0x30d3c
movq -0x50(%rbp), %rax
movq 0x8(%rax), %rax
movsbl (%rax), %eax
cmpl $0x2e, %eax
jne 0x30c78
movq -0x50(%rbp), %rax
movq 0x8(%rax), %rax
movsbl 0x1(%rax), %eax
cmpl $0x0, %eax
je 0x30caa
movq -0x50(%rbp), %rax
movq 0x8(%rax), %rax
movsbl (%rax), %eax
cmpl $0x2e, %eax
jne 0x30cac
movq -0x50(%rbp), %rax
movq 0x8(%rax), %rax
movsbl 0x1(%rax), %eax
cmpl $0x2e, %eax
jne 0x30cac
movq -0x50(%rbp), %rax
movq 0x8(%rax), %rax
movsbl 0x2(%rax), %eax
cmpl $0x0, %eax
jne 0x30cac
jmp 0x30c40
movl -0x1c(%rbp), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0x30ccd
movq -0x50(%rbp), %rax
movl 0x10(%rax), %eax
andl $0x4000, %eax           # imm = 0x4000
cmpl $0x0, %eax
jne 0x30ccd
jmp 0x30c40
movl -0x1c(%rbp), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x30cee
movq -0x50(%rbp), %rax
movl 0x10(%rax), %eax
andl $0x4000, %eax           # imm = 0x4000
cmpl $0x0, %eax
je 0x30cee
jmp 0x30c40
movq -0x50(%rbp), %rax
movq 0x8(%rax), %rdi
movq -0x18(%rbp), %rsi
callq 0x33120
cmpl $0x0, %eax
jne 0x30d09
jmp 0x30c40
movq -0x50(%rbp), %rax
movq 0x8(%rax), %rsi
movl 0x10(%rax), %eax
xorl %edx, %edx
btl $0xe, %eax
adcl $0x1, %edx
movl -0x5c(%rbp), %ecx
leaq -0x28(%rbp), %rdi
callq 0x312f0
subl $-0x1, %eax
jne 0x30d35
jmp 0x30d30
jmp 0x312c4
jmp 0x30d37
jmp 0x30c40
movq -0x48(%rbp), %rdi
callq 0x330e0
cmpl $0x0, 0x1c0514(%rip)    # 0x1f1260
je 0x30d50
jmp 0x30d9f
cmpq $0x0, -0x40(%rbp)
jne 0x30d6b
movq 0x1c050a(%rip), %rax    # 0x1f1268
movq %rax, -0x40(%rbp)
movl $0x2, -0x5c(%rbp)
jmp 0x30d7f
movq -0x40(%rbp), %rax
movq (%rax), %rax
movq %rax, -0x40(%rbp)
movl -0x5c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x5c(%rbp)
cmpq $0x0, -0x40(%rbp)
je 0x30d92
movq -0x40(%rbp), %rax
movq 0x8(%rax), %rax
movq %rax, -0x58(%rbp)
jmp 0x30d94
cmpq $0x0, -0x40(%rbp)
jne 0x30bcc
jmp 0x30da1
cmpl $0x0, 0x1c04b8(%rip)    # 0x1f1260
jne 0x310e4
leaq -0x860(%rbp), %rdi
movq -0x30(%rbp), %rsi
callq 0x63e0
movq -0x30(%rbp), %rax
cmpb $0x0, (%rax)
je 0x30dda
leaq -0x860(%rbp), %rdi
leaq 0x81216(%rip), %rsi     # 0xb1feb
callq 0x6690
leaq -0x860(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x6690
leaq -0x860(%rbp), %rdi
callq 0x68870
leaq -0x860(%rbp), %rdi
callq 0x688c0
cmpl $0x0, %eax
je 0x310e2
movsbl -0x860(%rbp), %eax
cmpl $0x7c, %eax
je 0x30e19
jmp 0x30df6
movl $0x1, -0x864(%rbp)
movslq -0x864(%rbp), %rax
movb -0x860(%rbp,%rax), %al
movl -0x864(%rbp), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movb %al, -0x860(%rbp,%rcx)
cmpb $0x0, %al
je 0x30e5b
jmp 0x30e4a
movl -0x864(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x864(%rbp)
jmp 0x30e23
movl -0x864(%rbp), %eax
subl $0x2, %eax
movl %eax, -0x864(%rbp)
movslq -0x864(%rbp), %rax
movzbl -0x860(%rbp,%rax), %eax
movslq %eax, %rcx
leaq 0xaf57d(%rip), %rax     # 0xe0400
movsbl (%rax,%rcx), %eax
cmpl $0x2f, %eax
jne 0x30ea7
movl $0x2, -0x86c(%rbp)
movslq -0x864(%rbp), %rax
movb $0x0, -0x860(%rbp,%rax)
jmp 0x30eb1
movl $0x1, -0x86c(%rbp)
movl $0x0, -0x868(%rbp)
movslq -0x868(%rbp), %rax
movsbl -0x860(%rbp,%rax), %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x89b(%rbp)
je 0x30ef2
movq -0x30(%rbp), %rax
movslq -0x868(%rbp), %rcx
movsbl (%rax,%rcx), %eax
cmpl $0x0, %eax
setne %al
movb %al, -0x89b(%rbp)
movb -0x89b(%rbp), %al
testb $0x1, %al
jne 0x30efe
jmp 0x30f54
movq -0x30(%rbp), %rax
movslq -0x868(%rbp), %rcx
movzbl (%rax,%rcx), %eax
movslq %eax, %rcx
leaq 0xaf4e9(%rip), %rax     # 0xe0400
movsbl (%rax,%rcx), %eax
movslq -0x868(%rbp), %rcx
movzbl -0x860(%rbp,%rcx), %ecx
movslq %ecx, %rdx
leaq 0xaf4cc(%rip), %rcx     # 0xe0400
movsbl (%rcx,%rdx), %ecx
cmpl %ecx, %eax
jne 0x30f3e
jmp 0x30f40
jmp 0x30f54
movl -0x868(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x868(%rbp)
jmp 0x30ebb
movq -0x30(%rbp), %rax
cmpb $0x0, (%rax)
jne 0x30f71
movslq -0x868(%rbp), %rax
movsbl -0x860(%rbp,%rax), %eax
cmpl $0x0, %eax
jne 0x30fac
movq -0x30(%rbp), %rax
movslq -0x868(%rbp), %rcx
cmpb $0x0, (%rax,%rcx)
jne 0x3107d
movslq -0x868(%rbp), %rax
movzbl -0x860(%rbp,%rax), %eax
movslq %eax, %rcx
leaq 0xaf461(%rip), %rax     # 0xe0400
movsbl (%rax,%rcx), %eax
cmpl $0x2f, %eax
jne 0x3107d
cmpl $0x0, -0x868(%rbp)
jle 0x30fc4
movl -0x868(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x868(%rbp)
movl $0x0, -0x864(%rbp)
movslq -0x868(%rbp), %rax
movb -0x860(%rbp,%rax), %al
movslq -0x864(%rbp), %rcx
movb %al, -0x860(%rbp,%rcx)
movsbl %al, %ecx
xorl %eax, %eax
cmpl $0x0, %ecx
movb %al, -0x89c(%rbp)
je 0x31023
movslq -0x868(%rbp), %rax
movzbl -0x860(%rbp,%rax), %eax
movslq %eax, %rcx
leaq 0xaf3ed(%rip), %rax     # 0xe0400
movsbl (%rax,%rcx), %eax
cmpl $0x2f, %eax
setne %al
movb %al, -0x89c(%rbp)
movb -0x89c(%rbp), %al
testb $0x1, %al
jne 0x3102f
jmp 0x31054
jmp 0x31031
movl -0x864(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x864(%rbp)
movl -0x868(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x868(%rbp)
jmp 0x30fce
movslq -0x868(%rbp), %rax
movzbl -0x860(%rbp,%rax), %eax
movslq %eax, %rcx
leaq 0xaf393(%rip), %rax     # 0xe0400
movsbl (%rax,%rcx), %eax
cmpl $0x2f, %eax
jne 0x3107b
jmp 0x30df6
jmp 0x31082
jmp 0x30df6
movl -0x1c(%rbp), %eax
andl $0x2, %eax
cmpl $0x0, %eax
je 0x3109b
cmpl $0x2, -0x86c(%rbp)
je 0x3109b
jmp 0x30df6
movl -0x1c(%rbp), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x310b4
cmpl $0x1, -0x86c(%rbp)
je 0x310b4
jmp 0x30df6
movl -0x86c(%rbp), %edx
leaq -0x28(%rbp), %rdi
leaq -0x860(%rbp), %rsi
movl $0x7ffffffe, %ecx       # imm = 0x7FFFFFFE
callq 0x312f0
subl $-0x1, %eax
jne 0x310db
jmp 0x310d6
jmp 0x312c4
jmp 0x310dd
jmp 0x30df6
jmp 0x310e4
cmpl $0x0, 0x1c0175(%rip)    # 0x1f1260
jne 0x3120b
movq -0x30(%rbp), %rax
cmpb $0x0, (%rax)
jne 0x3120b
movl -0x1c(%rbp), %eax
andl $0x1, %eax
cmpl $0x0, %eax
je 0x3120b
movb $0x0, -0x86d(%rbp)
movl $0x0, -0x880(%rbp)
cmpl $0x4, -0x880(%rbp)
jge 0x31209
movslq -0x880(%rbp), %rcx
leaq 0xaf3c7(%rip), %rax     # 0xe0500
cmpl $-0x1, (%rax,%rcx,4)
jne 0x31144
jmp 0x311f5
movslq -0x880(%rbp), %rcx
leaq 0x1c013e(%rip), %rax    # 0x1f1290
movl (%rax,%rcx,4), %eax
subl $0x1, %eax
movl %eax, -0x884(%rbp)
cmpl $0x0, -0x884(%rbp)
jl 0x311f3
movslq -0x880(%rbp), %rcx
leaq 0x1c0127(%rip), %rax    # 0x1f12a0
movq (%rax,%rcx,8), %rax
movl -0x884(%rbp), %ecx
shll $0x4, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx), %rdx
movq %rdx, -0x879(%rbp)
movl 0x8(%rax,%rcx), %eax
movl %eax, -0x871(%rbp)
leaq -0x879(%rbp), %rdi
movq -0x18(%rbp), %rsi
callq 0x33120
cmpl $0x0, %eax
jne 0x311b5
jmp 0x311df
leaq -0x28(%rbp), %rdi
leaq -0x879(%rbp), %rsi
movl $0x1, %edx
movl $0x7fffffff, %ecx       # imm = 0x7FFFFFFF
callq 0x312f0
subl $-0x1, %eax
jne 0x311db
jmp 0x311d6
jmp 0x312c4
jmp 0x311dd
jmp 0x311df
movl -0x884(%rbp), %eax
addl $-0x1, %eax
movl %eax, -0x884(%rbp)
jmp 0x3115e
jmp 0x311f5
movl -0x880(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x880(%rbp)
jmp 0x3111e
jmp 0x3120b
cmpl $0x0, 0x1c004e(%rip)    # 0x1f1260
je 0x312b1
movl -0x1c(%rbp), %eax
andl $0x4, %eax
cmpl $0x0, %eax
je 0x312b1
callq 0x32ee0
movq %rax, -0x890(%rbp)
cmpq $0x0, -0x890(%rbp)
je 0x312af
movq -0x890(%rbp), %rax
movq %rax, -0x898(%rbp)
movq -0x898(%rbp), %rax
cmpb $0x0, (%rax)
je 0x312a3
movq -0x898(%rbp), %rsi
leaq -0x28(%rbp), %rdi
movl $0x4, %edx
xorl %ecx, %ecx
callq 0x312f0
cmpl $0x0, %eax
jge 0x31281
movq -0x890(%rbp), %rdi
callq 0x61c0
jmp 0x312c4
jmp 0x31283
movq -0x898(%rbp), %rdi
callq 0x63d0
addq $0x1, %rax
addq -0x898(%rbp), %rax
movq %rax, -0x898(%rbp)
jmp 0x3124b
movq -0x890(%rbp), %rdi
callq 0x61c0
jmp 0x312b1
movq -0x30(%rbp), %rdi
callq 0x61c0
movq -0x28(%rbp), %rax
movq %rax, -0x8(%rbp)
jmp 0x312de
movq -0x30(%rbp), %rdi
callq 0x61c0
movq -0x28(%rbp), %rdi
callq 0x309e0
movq $0x0, -0x8(%rbp)
movq -0x8(%rbp), %rax
addq $0x8a0, %rsp            # imm = 0x8A0
popq %rbp
retq
nopl (%rax,%rax)