// File: /workspace/github_c_makefile_star2_O2/jonof[P]jftekwar/jfbuild/src/osd.c
// Function: OSD_Manipulate
static void OSD_Manipulate(int op) {
	int i, j;
	symbol_t *tabc = NULL;

	switch (op) {
		case OSDOP_START:
			osdeditcursor = 0;
			osdeditwinstart = osdeditcursor;
			osdeditwinend = osdeditwinstart+editlinewidth;
			break;
		case OSDOP_END:
			osdeditcursor = osdeditlen;
			osdeditwinend = osdeditcursor;
			osdeditwinstart = osdeditwinend-editlinewidth;
			if (osdeditwinstart<0) {
				osdeditwinstart=0;
				osdeditwinend = editlinewidth;
			}
			break;
		case OSDOP_LEFT:
			if (osdeditcursor>0) {
				osdeditcursor--;
			}
			if (osdeditcursor<osdeditwinstart) {
				osdeditwinend-=(osdeditwinstart-osdeditcursor);
				osdeditwinstart-=(osdeditwinstart-osdeditcursor);
			}
			break;
		case OSDOP_LEFT_WORD:
			if (osdeditcursor>0) {
				while (osdeditcursor>0) {
					if (osdeditbuf[osdeditcursor-1] != 32) break;
					osdeditcursor--;
				}
				while (osdeditcursor>0) {
					if (osdeditbuf[osdeditcursor-1] == 32) break;
					osdeditcursor--;
				}
			}
			if (osdeditcursor<osdeditwinstart) {
				osdeditwinend-=(osdeditwinstart-osdeditcursor);
				osdeditwinstart-=(osdeditwinstart-osdeditcursor);
			}
			break;
		case OSDOP_RIGHT:
			if (osdeditcursor<osdeditlen) {
				osdeditcursor++;
			}
			if (osdeditcursor>=osdeditwinend) {
				osdeditwinstart+=(osdeditcursor-osdeditwinend);
				osdeditwinend+=(osdeditcursor-osdeditwinend);
			}
			break;
		case OSDOP_RIGHT_WORD:
			if (osdeditcursor<osdeditlen) {
				while (osdeditcursor<osdeditlen) {
					if (osdeditbuf[osdeditcursor] == 32) break;
					osdeditcursor++;
				}
				while (osdeditcursor<osdeditlen) {
					if (osdeditbuf[osdeditcursor] != 32) break;
					osdeditcursor++;
				}
			}
			if (osdeditcursor>=osdeditwinend) {
				osdeditwinstart+=(osdeditcursor-osdeditwinend);
				osdeditwinend+=(osdeditcursor-osdeditwinend);
			}
			break;
		case OSDOP_BACKSPACE:
			if (!osdeditcursor || !osdeditlen) return;
			if (!osdovertype) {
				if (osdeditcursor < osdeditlen)
					Bmemmove(osdeditbuf+osdeditcursor-1, osdeditbuf+osdeditcursor, osdeditlen-osdeditcursor);
				osdeditlen--;
			}
			osdeditcursor--;
			if (osdeditcursor<osdeditwinstart) {
				osdeditwinstart--;
				osdeditwinend--;
			}
			break;
		case OSDOP_DELETE:
			if (osdeditcursor == osdeditlen || !osdeditlen) return;
			if (osdeditcursor <= osdeditlen-1) Bmemmove(osdeditbuf+osdeditcursor, osdeditbuf+osdeditcursor+1, osdeditlen-osdeditcursor-1);
			osdeditlen--;
			break;
		case OSDOP_DELETE_START:
			if (osdeditcursor>0 && osdeditlen) {
				if (osdeditcursor<osdeditlen)
					Bmemmove(osdeditbuf, osdeditbuf+osdeditcursor, osdeditlen-osdeditcursor);
				osdeditlen-=osdeditcursor;
				osdeditcursor = 0;
				osdeditwinstart = 0;
				osdeditwinend = editlinewidth;
			}
			break;
		case OSDOP_DELETE_END:
			osdeditlen = osdeditcursor;
			break;
		case OSDOP_DELETE_WORD:
			if (osdeditcursor>0 && osdeditlen>0) {
				i=osdeditcursor;
				while (i>0 && osdeditbuf[i-1]==32) i--;
				while (i>0 && osdeditbuf[i-1]!=32) i--;
				if (osdeditcursor<osdeditlen)
					Bmemmove(osdeditbuf+i, osdeditbuf+osdeditcursor, osdeditlen-osdeditcursor);
				osdeditlen -= (osdeditcursor-i);
				osdeditcursor = i;
				if (osdeditcursor < osdeditwinstart) {
					osdeditwinstart=osdeditcursor;
					osdeditwinend=osdeditwinstart+editlinewidth;
				}
			}
			break;
		case OSDOP_CANCEL:
			osdeditlen=0;
			osdeditcursor=0;
			osdeditwinstart=0;
			osdeditwinend=editlinewidth;
			break;
		case OSDOP_COMPLETE:
			if (!lastmatch) {
				for (i=osdeditcursor;i>0;i--) if (osdeditbuf[i-1] == ' ') break;
				for (j=0;osdeditbuf[i] != ' ' && i < osdeditlen;j++,i++)
					osdedittmp[j] = osdeditbuf[i];
				osdedittmp[j] = 0;

				if (j > 0)
					tabc = findsymbol(osdedittmp, NULL);
			} else {
				tabc = findsymbol(osdedittmp, lastmatch->next);
				if (!tabc && lastmatch)
					tabc = findsymbol(osdedittmp, NULL);	// wrap
			}

			if (tabc) {
				for (i=osdeditcursor;i>0;i--) if (osdeditbuf[i-1] == ' ') break;
				osdeditlen = i;
				for (j=0;tabc->name[j] && osdeditlen <= EDITLENGTH;i++,j++,osdeditlen++)
					osdeditbuf[i] = tabc->name[j];
				osdeditcursor = osdeditlen;
				osdeditwinend = osdeditcursor;
				osdeditwinstart = osdeditwinend-editlinewidth;
				if (osdeditwinstart<0) {
					osdeditwinstart=0;
					osdeditwinend = editlinewidth;
				}

				lastmatch = tabc;
			}
			break;
		case OSDOP_SUBMIT:
			if (osdeditlen>0) {
				osdeditbuf[osdeditlen] = 0;
				Bmemmove(osdhistorybuf[1], osdhistorybuf[0], (HISTORYDEPTH-1)*(EDITLENGTH+1));
				Bmemmove(osdhistorybuf[0], osdeditbuf, EDITLENGTH+1);
				if (osdhistorysize < HISTORYDEPTH) osdhistorysize++;
				if (osdexeccount == HISTORYDEPTH)
					OSD_Printf("Command Buffer Warning: Failed queueing command "
							"for execution. Buffer full.\n");
				else
					osdexeccount++;
				osdhistorypos=-1;
			}

			osdeditlen=0;
			osdeditcursor=0;
			osdeditwinstart=0;
			osdeditwinend=editlinewidth;
			break;
		case OSDOP_HISTORY_UP:
			if (osdhistorypos < osdhistorysize-1) {
				osdhistorypos++;
				memcpy(osdeditbuf, osdhistorybuf[osdhistorypos], EDITLENGTH+1);
				osdeditlen = osdeditcursor = 0;
				while (osdeditbuf[osdeditcursor]) {
					osdeditlen++;
					osdeditcursor++;
				}
				if (osdeditcursor<osdeditwinstart) {
					osdeditwinend = osdeditcursor;
					osdeditwinstart = osdeditwinend-editlinewidth;

					if (osdeditwinstart<0) {
						osdeditwinend-=osdeditwinstart;
						osdeditwinstart=0;
					}
				} else if (osdeditcursor>=osdeditwinend) {
					osdeditwinstart+=(osdeditcursor-osdeditwinend);
					osdeditwinend+=(osdeditcursor-osdeditwinend);
				}
			}
			break;
		case OSDOP_HISTORY_DOWN:
			if (osdhistorypos >= 0) {
				if (osdhistorypos == 0) {
					osdeditlen=0;
					osdeditcursor=0;
					osdeditwinstart=0;
					osdeditwinend=editlinewidth;
					osdhistorypos = -1;
				} else {
					osdhistorypos--;
					memcpy(osdeditbuf, osdhistorybuf[osdhistorypos], EDITLENGTH+1);
					osdeditlen = osdeditcursor = 0;
					while (osdeditbuf[osdeditcursor]) {
						osdeditlen++;
						osdeditcursor++;
					}
					if (osdeditcursor<osdeditwinstart) {
						osdeditwinend = osdeditcursor;
						osdeditwinstart = osdeditwinend-editlinewidth;

						if (osdeditwinstart<0) {
							osdeditwinend-=osdeditwinstart;
							osdeditwinstart=0;
						}
					} else if (osdeditcursor>=osdeditwinend) {
						osdeditwinstart+=(osdeditcursor-osdeditwinend);
						osdeditwinend+=(osdeditcursor-osdeditwinend);
					}
				}
			}
			break;
		case OSDOP_SCROLL_TOP:
			osdhead = osdlines-1;
			break;
		case OSDOP_SCROLL_BOTTOM:
			osdhead = 0;
			break;
		case OSDOP_PAGE_UP:
			if (osdhead < osdlines-1)
				osdhead++;
			break;
		case OSDOP_PAGE_DOWN:
			if (osdhead > 0)
				osdhead--;
			break;
	}
}

// Assembly:
pushq %rbp
pushq %r14
pushq %rbx
movl %edi, %eax
leaq 0x29533(%rip), %rcx     # 0x6c92c
movslq (%rcx,%rax,4), %rax
addq %rcx, %rax
jmpq *%rax
movl 0x5adf04(%rip), %ecx    # 0x5f130c
movl %ecx, 0x5ae102(%rip)    # 0x5f1510
movl %ecx, 0x5a8d4(%rip)     # 0x9dce8
movl 0x5a8c2(%rip), %eax     # 0x9dcdc
addl $-0x4, %eax
subl %eax, %ecx
movl %ecx, 0x5adee3(%rip)    # 0x5f1308
jns 0x4397a
andl $0x0, 0x5aded6(%rip)    # 0x5f1308
jmp 0x43974
movl 0x5a843(%rip), %eax     # 0x9dc80
jmp 0x43839
movslq 0x5a8b7(%rip), %rax     # 0x9dd00
movl 0x5b02d1(%rip), %ecx    # 0x5f3720
decl %ecx
cmpl %ecx, %eax
jge 0x4397a
incq %rax
movl %eax, 0x5a89e(%rip)     # 0x9dd00
shlq $0x9, %rax
leaq 0x5ae0b3(%rip), %rsi    # 0x5f1520
addq %rax, %rsi
leaq 0x5ade99(%rip), %rbx    # 0x5f1310
movl $0x200, %edx            # imm = 0x200
movq %rbx, %rdi
callq 0x60c0
andl $0x0, 0x5ae085(%rip)    # 0x5f1510
andl $0x0, 0x5ade7a(%rip)    # 0x5f130c
xorl %eax, %eax
cmpb $0x0, (%rax,%rbx)
je 0x43846
incq %rax
movl %eax, 0x5ade65(%rip)    # 0x5f130c
movl %eax, 0x5ae063(%rip)    # 0x5f1510
jmp 0x43494
movl 0x5ae05b(%rip), %eax    # 0x5f1510
cmpl 0x5ade51(%rip), %eax    # 0x5f130c
jge 0x434c5
incl %eax
movl %eax, 0x5ae04b(%rip)    # 0x5f1510
movl %eax, %ecx
subl 0x5a81b(%rip), %ecx     # 0x9dce8
jl 0x4397a
addl %ecx, 0x5ade2f(%rip)    # 0x5f1308
jmp 0x43974
movq 0x5ade0b(%rip), %rax    # 0x5f12f0
testq %rax, %rax
je 0x43916
movq 0x8(%rax), %rdi
callq 0x4441b
testq %rax, %rax
jne 0x43a8a
jmp 0x43a7a
movl 0x5ae005(%rip), %eax    # 0x5f1510
movl %eax, 0x5addfb(%rip)    # 0x5f130c
jmp 0x4397a
movl 0x5adff4(%rip), %eax    # 0x5f1510
testl %eax, %eax
jle 0x43528
decl %eax
movl %eax, 0x5adfe8(%rip)    # 0x5f1510
movl %eax, %ecx
subl 0x5addd8(%rip), %ecx    # 0x5f1308
jge 0x4397a
addl %ecx, 0x5a7ac(%rip)     # 0x9dce8
movl %eax, 0x5addc6(%rip)    # 0x5f1308
jmp 0x4397a
movl 0x5a7b3(%rip), %eax     # 0x9dd00
testl %eax, %eax
js 0x4397a
je 0x43a0c
decl %eax
movl %eax, 0x5a79d(%rip)     # 0x9dd00
shlq $0x9, %rax
leaq 0x5adfb2(%rip), %rsi    # 0x5f1520
addq %rax, %rsi
leaq 0x5add98(%rip), %rbx    # 0x5f1310
movl $0x200, %edx            # imm = 0x200
movq %rbx, %rdi
callq 0x60c0
andl $0x0, 0x5adf84(%rip)    # 0x5f1510
andl $0x0, 0x5add79(%rip)    # 0x5f130c
xorl %eax, %eax
cmpb $0x0, (%rax,%rbx)
je 0x43846
incq %rax
movl %eax, 0x5add64(%rip)    # 0x5f130c
movl %eax, 0x5adf62(%rip)    # 0x5f1510
jmp 0x43595
movslq 0x5adf59(%rip), %rax    # 0x5f1510
testq %rax, %rax
jle 0x438a0
leaq 0x5add49(%rip), %rcx    # 0x5f1310
testq %rax, %rax
jle 0x43886
cmpb $0x20, -0x1(%rax,%rcx)
jne 0x43886
decq %rax
movl %eax, 0x5adf2c(%rip)    # 0x5f1510
jmp 0x435c7
movslq 0x5adf23(%rip), %rax    # 0x5f1510
movl 0x5add19(%rip), %ebx    # 0x5f130c
cmpl %ebx, %eax
sete %cl
testl %ebx, %ebx
sete %dl
orb %cl, %dl
jne 0x4397a
cmpl %ebx, %eax
jge 0x43627
leaq 0x5add00(%rip), %rcx    # 0x5f1310
leaq (%rcx,%rax), %rdi
leaq (%rax,%rcx), %rsi
incq %rsi
notl %eax
addl %ebx, %eax
movslq %eax, %rdx
callq 0x61a0
decl %ebx
movl %ebx, 0x5adcdd(%rip)    # 0x5f130c
jmp 0x4397a
andl $0x0, 0x5adcc9(%rip)    # 0x5f1304
jmp 0x4397a
movl 0x5adeca(%rip), %edx    # 0x5f1510
movslq 0x5adcbf(%rip), %rax    # 0x5f130c
cmpl %eax, %edx
jge 0x438db
movslq %edx, %rdx
leaq 0x5adcb1(%rip), %rcx    # 0x5f1310
cmpq %rax, %rdx
jge 0x438bf
cmpb $0x20, (%rdx,%rcx)
je 0x438bf
leal 0x1(%rdx), %esi
incq %rdx
movl %esi, 0x5ade92(%rip)    # 0x5f1510
jmp 0x4365f
movslq 0x5adc85(%rip), %rax    # 0x5f130c
testq %rax, %rax
jle 0x43956
leaq 0x5adc79(%rip), %rbx    # 0x5f1310
movb $0x0, (%rax,%rbx)
leaq 0x5ae07e(%rip), %rdi    # 0x5f1720
leaq 0x5ade77(%rip), %r14    # 0x5f1520
movl $0x1e00, %edx           # imm = 0x1E00
movq %r14, %rsi
callq 0x61a0
movl $0x200, %edx            # imm = 0x200
movq %r14, %rdi
movq %rbx, %rsi
callq 0x60c0
movl 0x5b0054(%rip), %eax    # 0x5f3720
cmpl $0xf, %eax
jg 0x436d9
incl %eax
movl %eax, 0x5b0047(%rip)    # 0x5f3720
movl 0x5ade35(%rip), %eax    # 0x5f1514
cmpl $0x10, %eax
jne 0x43947
leaq 0x2961e(%rip), %rdi     # 0x6cd0d
xorl %eax, %eax
callq 0x43fe7
jmp 0x4394f
movslq 0x5ade0e(%rip), %rbx    # 0x5f1510
testq %rbx, %rbx
setne %al
movl 0x5adbfe(%rip), %ebp    # 0x5f130c
testl %ebp, %ebp
setne %cl
andb %al, %cl
cmpb $0x1, %cl
jne 0x4397a
cmpl $0x0, 0x5adbd3(%rip)    # 0x5f12f8
jne 0x43750
cmpl %ebx, %ebp
jle 0x43748
leaq 0x5adbde(%rip), %rsi    # 0x5f1310
leaq (%rbx,%rsi), %rdi
decq %rdi
addq %rbx, %rsi
movl %ebp, %eax
subl %ebx, %eax
movslq %eax, %rdx
callq 0x61a0
decl %ebp
movl %ebp, 0x5adbbc(%rip)    # 0x5f130c
leal -0x1(%rbx), %eax
movl %eax, 0x5addb7(%rip)    # 0x5f1510
movl 0x5adba9(%rip), %eax    # 0x5f1308
cmpl %eax, %ebx
jg 0x4397a
decl %eax
movl %eax, 0x5adb99(%rip)    # 0x5f1308
decl 0x5a573(%rip)           # 0x9dce8
jmp 0x4397a
movl 0x5adb84(%rip), %eax    # 0x5f1304
movl 0x5a4fa(%rip), %ecx     # 0x9dc80
decl %ecx
cmpl %ecx, %eax
jge 0x4397a
incl %eax
jmp 0x4383b
movslq 0x5add72(%rip), %rax    # 0x5f1510
testq %rax, %rax
setg %cl
movl 0x5adb62(%rip), %ebx    # 0x5f130c
testl %ebx, %ebx
setg %dl
andb %cl, %dl
cmpb $0x1, %dl
jne 0x4397a
leal 0x1(%rax), %r14d
leaq 0x5adb4b(%rip), %rsi    # 0x5f1310
movq %rax, %rcx
testq %rcx, %rcx
jle 0x4397f
decl %r14d
cmpb $0x20, -0x1(%rcx,%rsi)
leaq -0x1(%rcx), %rcx
je 0x437c8
jmp 0x43982
movslq 0x5add25(%rip), %rax    # 0x5f1510
testq %rax, %rax
setg %cl
movl 0x5adb15(%rip), %ebx    # 0x5f130c
testl %ebx, %ebx
setne %dl
andb %cl, %dl
cmpb $0x1, %dl
jne 0x4397a
cmpl %eax, %ebx
jle 0x439f1
leaq 0x5adafa(%rip), %rdi    # 0x5f1310
movq %rax, %rsi
addq %rdi, %rsi
subl %eax, %ebx
movslq %ebx, %rdx
callq 0x61a0
jmp 0x439f3
movl 0x5adad3(%rip), %eax    # 0x5f1304
testl %eax, %eax
jle 0x4397a
decl %eax
movl %eax, 0x5adac3(%rip)    # 0x5f1304
jmp 0x4397a
movl 0x5adabc(%rip), %ecx    # 0x5f1308
cmpl %eax, %ecx
jle 0x438fa
movl %eax, 0x5a48e(%rip)     # 0x9dce8
movl 0x5a47c(%rip), %ecx     # 0x9dcdc
subl %ecx, %eax
addl $0x4, %eax
movl %eax, 0x5ada9d(%rip)    # 0x5f1308
jns 0x4397a
addl $-0x4, %ecx
movl %ecx, 0x5a46e(%rip)     # 0x9dce8
andl $0x0, 0x5ada87(%rip)    # 0x5f1308
jmp 0x4397a
movl %eax, %eax
testl %eax, %eax
jle 0x438a0
leal -0x1(%rax), %edx
cmpb $0x20, (%rdx,%rcx)
je 0x438a0
decq %rax
movl %eax, 0x5adc72(%rip)    # 0x5f1510
jmp 0x43888
movl %eax, %ecx
subl 0x5ada60(%rip), %ecx    # 0x5f1308
jge 0x4397a
addl %ecx, 0x5a434(%rip)     # 0x9dce8
movl %eax, 0x5ada4e(%rip)    # 0x5f1308
jmp 0x4397a
movslq %edx, %rdx
cmpq %rax, %rdx
jge 0x438db
cmpb $0x20, (%rdx,%rcx)
jne 0x438db
leal 0x1(%rdx), %esi
incq %rdx
movl %esi, 0x5adc37(%rip)    # 0x5f1510
jmp 0x438c2
movl %edx, %eax
subl 0x5a405(%rip), %eax     # 0x9dce8
jl 0x4397a
addl %eax, 0x5ada19(%rip)    # 0x5f1308
movl %edx, 0x5a3f3(%rip)     # 0x9dce8
jmp 0x4397a
movl 0x5a3e8(%rip), %edx     # 0x9dce8
cmpl %eax, %edx
jg 0x4397a
subl %edx, %ecx
addl %eax, %ecx
movl %ecx, 0x5ad9fa(%rip)    # 0x5f1308
movl %eax, 0x5a3d4(%rip)     # 0x9dce8
jmp 0x4397a
movl 0x5adbf4(%rip), %edx    # 0x5f1510
movl %edx, %ecx
sarl $0x1f, %ecx
andl %edx, %ecx
leal 0x1(%rdx), %esi
leaq 0x5ad9e3(%rip), %rax    # 0x5f1310
testl %edx, %edx
jle 0x43a3c
decl %esi
cmpb $0x20, -0x1(%rdx,%rax)
leaq -0x1(%rdx), %rdx
jne 0x4392d
jmp 0x43a3e
incl %eax
movl %eax, 0x5adbc5(%rip)    # 0x5f1514
orl $-0x1, 0x5a3aa(%rip)    # 0x9dd00
andl $0x0, 0x5ad9af(%rip)    # 0x5f130c
andl $0x0, 0x5adbac(%rip)    # 0x5f1510
andl $0x0, 0x5ad99d(%rip)    # 0x5f1308
movl 0x5a36b(%rip), %eax     # 0x9dcdc
addl $-0x4, %eax
movl %eax, 0x5a36e(%rip)     # 0x9dce8
popq %rbx
popq %r14
popq %rbp
retq
xorl %r14d, %r14d
movl %r14d, %edx
movl %r14d, %ecx
sarl $0x1f, %ecx
andl %r14d, %ecx
incl %r14d
testl %edx, %edx
jle 0x439a5
decl %r14d
cmpb $0x20, -0x1(%rdx,%rsi)
leaq -0x1(%rdx), %rdx
jne 0x43991
jmp 0x439a8
movl %ecx, %r14d
cmpl %eax, %ebx
jle 0x439c1
movl %r14d, %edi
addq %rsi, %rdi
addq %rax, %rsi
subl %eax, %ebx
movslq %ebx, %rdx
callq 0x61a0
jmp 0x439c3
subl %eax, %ebx
addl %r14d, %ebx
movl %ebx, 0x5ad940(%rip)    # 0x5f130c
movl %r14d, 0x5adb3d(%rip)   # 0x5f1510
cmpl 0x5ad92e(%rip), %r14d   # 0x5f1308
jge 0x4397a
movl %r14d, 0x5ad925(%rip)   # 0x5f1308
movl 0x5a2f3(%rip), %eax     # 0x9dcdc
addl %r14d, %eax
addl $-0x4, %eax
jmp 0x43974
subl %eax, %ebx
andl $0x0, 0x5adb16(%rip)    # 0x5f1510
andl $0x0, 0x5ad907(%rip)    # 0x5f1308
movl %ebx, 0x5ad905(%rip)    # 0x5f130c
jmp 0x4396b
andl $0x0, 0x5ad8f9(%rip)    # 0x5f130c
andl $0x0, 0x5adaf6(%rip)    # 0x5f1510
andl $0x0, 0x5ad8e7(%rip)    # 0x5f1308
movl 0x5a2b5(%rip), %eax     # 0x9dcdc
addl $-0x4, %eax
movl %eax, 0x5a2b8(%rip)     # 0x9dce8
orl $-0x1, 0x5a2c9(%rip)    # 0x9dd00
jmp 0x4397a
movl %ecx, %esi
movslq 0x5ad8c7(%rip), %rdx    # 0x5f130c
movslq %esi, %rsi
xorl %ecx, %ecx
leaq 0x5afacf(%rip), %rdi    # 0x5f3520
leaq (%rsi,%rcx), %r9
movb (%rax,%r9), %r8b
cmpb $0x20, %r8b
je 0x43a6d
cmpq %rdx, %r9
jge 0x43a6d
movb %r8b, (%rcx,%rdi)
incq %rcx
jmp 0x43a51
movb $0x0, (%rcx,%rdi)
testq %rcx, %rcx
je 0x4397a
xorl %edi, %edi
callq 0x4441b
testq %rax, %rax
je 0x4397a
movl 0x5ada80(%rip), %esi    # 0x5f1510
movl %esi, %edx
sarl $0x1f, %edx
andl %esi, %edx
leal 0x1(%rsi), %edi
leaq 0x5ad86f(%rip), %rcx    # 0x5f1310
testl %esi, %esi
jle 0x43ab4
decl %edi
cmpb $0x20, -0x1(%rsi,%rcx)
leaq -0x1(%rsi), %rsi
jne 0x43aa1
jmp 0x43ab6
movl %edx, %edi
movq (%rax), %rsi
movslq %edi, %rdx
movb (%rsi), %dil
testb %dil, %dil
je 0x43ad8
cmpl $0x1ff, %edx            # imm = 0x1FF
jg 0x43ad8
movb %dil, (%rdx,%rcx)
incq %rdx
incq %rsi
jmp 0x43abc
movl %edx, 0x5ad82e(%rip)    # 0x5f130c
movl %edx, 0x5ada2c(%rip)    # 0x5f1510
movl %edx, 0x5a1fe(%rip)     # 0x9dce8
movl 0x5a1ec(%rip), %ecx     # 0x9dcdc
subl %ecx, %edx
addl $0x4, %edx
movl %edx, 0x5ad80d(%rip)    # 0x5f1308
jns 0x43b0d
addl $-0x4, %ecx
andl $0x0, 0x5ad801(%rip)    # 0x5f1308
movl %ecx, 0x5a1db(%rip)     # 0x9dce8
movq %rax, 0x5ad7dc(%rip)    # 0x5f12f0
jmp 0x4397a