// File: /workspace/github_c_makefile_star2_O2/jonof[P]jftekwar/jfbuild/src/engine.c
// Function: drawrooms
void drawrooms(int daposx, int daposy, int daposz,
		 short daang, int dahoriz, short dacursectnum)
{
	int i, j, z, cz, fz, closest;
	short *shortptr1, *shortptr2;

#if defined(DEBUGGINGAIDS)
	if (numscans > MAXWALLSB) debugprintf("damage report: numscans %d exceeded %d\n", numscans, MAXWALLSB);
	if (numbunches > MAXWALLSB) debugprintf("damage report: numbunches %d exceeded %d\n", numbunches, MAXWALLSB);
	if (maskwallcnt > MAXWALLSB) debugprintf("damage report: maskwallcnt %d exceeded %d\n", maskwallcnt, MAXWALLSB);
	if (smostwallcnt > MAXWALLSB) debugprintf("damage report: smostwallcnt %d exceeded %d\n", smostwallcnt, MAXWALLSB);
#endif

	beforedrawrooms = 0;

	globalposx = daposx; globalposy = daposy; globalposz = daposz;
	globalang = (daang&2047);

	globalhoriz = mulscale16(dahoriz-100,xdimenscale)+(ydimen>>1);
	globaluclip = (0-globalhoriz)*xdimscale;
	globaldclip = (ydimen-globalhoriz)*xdimscale;

	i = mulscale16(xdimenscale,viewingrangerecip);
	globalpisibility = mulscale16(parallaxvisibility,i);
	globalvisibility = mulscale16(visibility,i);
	globalhisibility = mulscale16(globalvisibility,xyaspect);
	globalcisibility = mulscale8(globalhisibility,320);

	globalcursectnum = dacursectnum;
	totalclocklock = totalclock;

	cosglobalang = sintable[(globalang+512)&2047];
	singlobalang = sintable[globalang&2047];
	cosviewingrangeglobalang = mulscale16(cosglobalang,viewingrange);
	sinviewingrangeglobalang = mulscale16(singlobalang,viewingrange);

	if ((xyaspect != oxyaspect) || (xdimen != oxdimen) || (viewingrange != oviewingrange))
		dosetaspect();

	//clearbufbyte(&gotsector[0],(int)((numsectors+7)>>3),0L);
	Bmemset(&gotsector[0],0,(int)((numsectors+7)>>3));

	shortptr1 = (short *)&startumost[windowx1];
	shortptr2 = (short *)&startdmost[windowx1];
	i = xdimen-1;
	do
	{
		umost[i] = shortptr1[i]-windowy1;
		dmost[i] = shortptr2[i]-windowy1;
		i--;
	} while (i != 0);
	umost[0] = shortptr1[0]-windowy1;
	dmost[0] = shortptr2[0]-windowy1;

	//============================================================================= //POLYMOST BEGINS
#if USE_POLYMOST
	polymost_drawrooms(); if (rendmode) { return; }
#endif
	//============================================================================= //POLYMOST ENDS

	frameoffset = frameplace + windowy1*bytesperline + windowx1;

	numhits = xdimen; numscans = 0; numbunches = 0;
	maskwallcnt = 0; smostwallcnt = 0; smostcnt = 0; spritesortcnt = 0;

	if (globalcursectnum >= MAXSECTORS)
		globalcursectnum -= MAXSECTORS;
	else
	{
		i = globalcursectnum;
		updatesector(globalposx,globalposy,&globalcursectnum);
		if (globalcursectnum < 0) globalcursectnum = i;
	}

	globparaceilclip = 1;
	globparaflorclip = 1;
	getzsofslope(globalcursectnum,globalposx,globalposy,&cz,&fz);
	if (globalposz < cz) globparaceilclip = 0;
	if (globalposz > fz) globparaflorclip = 0;

	scansector(globalcursectnum);

	if (inpreparemirror)
	{
		inpreparemirror = 0;
		mirrorsx1 = xdimen-1; mirrorsx2 = 0;
		for(i=numscans-1;i>=0;i--)
		{
			if (wall[thewall[i]].nextsector < 0) continue;
			if (xb1[i] < mirrorsx1) mirrorsx1 = xb1[i];
			if (xb2[i] > mirrorsx2) mirrorsx2 = xb2[i];
		}

		for(i=0;i<mirrorsx1;i++)
			if (umost[i] <= dmost[i])
				{ umost[i] = 1; dmost[i] = 0; numhits--; }
		for(i=mirrorsx2+1;i<xdimen;i++)
			if (umost[i] <= dmost[i])
				{ umost[i] = 1; dmost[i] = 0; numhits--; }

		drawalls(0L);
		numbunches--;
		bunchfirst[0] = bunchfirst[numbunches];
		bunchlast[0] = bunchlast[numbunches];

		mirrorsy1 = min(umost[mirrorsx1],umost[mirrorsx2]);
		mirrorsy2 = max(dmost[mirrorsx1],dmost[mirrorsx2]);
	}

	while ((numbunches > 0) && (numhits > 0))
	{
		clearbuf(&tempbuf[0],(int)((numbunches+3)>>2),0L);
		tempbuf[0] = 1;

		closest = 0;              //Almost works, but not quite :(
		for(i=1;i<numbunches;i++)
		{
			if ((j = bunchfront(i,closest)) < 0) continue;
			tempbuf[i] = 1;
			if (j == 0) tempbuf[closest] = 1, closest = i;
		}
		for(i=0;i<numbunches;i++) //Double-check
		{
			if (tempbuf[i]) continue;
			if ((j = bunchfront(i,closest)) < 0) continue;
			tempbuf[i] = 1;
			if (j == 0) tempbuf[closest] = 1, closest = i, i = 0;
		}

		drawalls(closest);

		if (automapping)
		{
			for(z=bunchfirst[closest];z>=0;z=p2[z])
				show2dwall[thewall[z]>>3] |= pow2char[thewall[z]&7];
		}

		numbunches--;
		bunchfirst[closest] = bunchfirst[numbunches];
		bunchlast[closest] = bunchlast[numbunches];
	}
}

// Assembly:
pushq %rbp
pushq %r15
pushq %r14
pushq %r13
pushq %r12
pushq %rbx
pushq %rax
andl $0x0, 0x7a8e1(%rip)     # 0x9d788
movl %edi, 0x210ba3(%rip)    # 0x233a50
movl %esi, 0x210ba1(%rip)    # 0x233a54
movl %edx, 0x241ba7(%rip)    # 0x264a60
movl $0x7ff, %edx            # imm = 0x7FF
movl %ecx, %eax
andl %edx, %eax
movw %ax, 0x3a4e67(%rip)     # 0x3c7d30
addl $-0x64, %r8d
movslq 0x251bc4(%rip), %rsi    # 0x274a98
movslq %r8d, %rdi
imulq %rsi, %rdi
shrq $0x10, %rdi
movl 0x251bae(%rip), %r8d    # 0x274a94
movl %r8d, %r10d
sarl %r10d
addl %edi, %r10d
movl %r10d, 0x251ba6(%rip)   # 0x274a9c
movl 0x3a4e38(%rip), %edi    # 0x3c7d34
subl %r10d, %r8d
imull %edi, %r8d
imull %r10d, %edi
negl %edi
movl %edi, 0x249b71(%rip)    # 0x26ca80
movl %r8d, 0x251b7a(%rip)    # 0x274a90
movslq 0x3a4e1b(%rip), %rdi    # 0x3c7d38
movslq 0x3825cc(%rip), %r8     # 0x3a54f0
imulq %rsi, %rdi
shrq $0x10, %rdi
movslq %edi, %rsi
imulq %rsi, %r8
shrq $0x10, %r8
movl %r8d, 0x3a4dfe(%rip)    # 0x3c7d3c
movslq 0x3825a7(%rip), %rdi    # 0x3a54ec
imulq %rsi, %rdi
shrq $0x10, %rdi
movl %edi, 0x3a4ded(%rip)    # 0x3c7d40
movl 0x33395f(%rip), %esi    # 0x3568b8
movslq %esi, %rsi
movslq %edi, %rdi
imulq %rsi, %rdi
shrq $0x10, %rdi
movl %edi, 0x3a4dd7(%rip)    # 0x3c7d44
movslq %edi, %rdi
imulq $0x140, %rdi, %rdi      # imm = 0x140
shrq $0x8, %rdi
movl %edi, 0x3a4dc7(%rip)    # 0x3c7d48
movw %r9w, 0x3a4dc3(%rip)    # 0x3c7d4c
movl 0x382559(%rip), %edi    # 0x3a54e8
movl %edi, 0x210ac3(%rip)    # 0x233a58
addl $0x200, %ecx            # imm = 0x200
andl %edx, %ecx
leaq 0x3a4dac(%rip), %rdx    # 0x3c7d50
movswq (%rdx,%rcx,2), %rcx
movl %ecx, 0x245ac1(%rip)    # 0x268a70
movswq (%rdx,%rax,2), %rdx
movl %edx, 0x245abe(%rip)    # 0x268a78
movslq 0x3a5d8f(%rip), %rax    # 0x3c8d50
imulq %rax, %rcx
shrq $0x10, %rcx
movl %ecx, 0x245aad(%rip)    # 0x268a7c
imulq %rax, %rdx
shrq $0x10, %rdx
movl %edx, 0x245a97(%rip)    # 0x268a74
cmpl 0x7ac65(%rip), %esi     # 0x9dc48
jne 0x23011
movl 0x7a845(%rip), %esi     # 0x9d830
movl 0x7ac5b(%rip), %ecx     # 0x9dc4c
movl %esi, %edi
xorl %ecx, %edi
movl 0x7ac55(%rip), %edx     # 0x9dc50
movl %edx, %r8d
xorl %eax, %r8d
orl %edi, %r8d
movl %esi, %ebp
jne 0x230a6
jmp 0x231a1
movl %esi, 0x7ac31(%rip)     # 0x9dc48
imulq $0x140, %rsi, %rcx      # imm = 0x140
movabsq $0x80000000000, %rax    # imm = 0x80000000000
xorl %edx, %edx
idivq %rcx
movq 0x3ecc54(%rip), %rsi    # 0x40fc88
movl 0x3ecc56(%rip), %edi    # 0x40fc90
movslq %edi, %r8
movl %eax, -0x4(%rsi,%r8,4)
movl 0x3ddfa7(%rip), %r9d    # 0x400ff0
shll $0x2, %r9d
movq 0x3ecc2c(%rip), %r10    # 0x40fc80
negl %r8d
testl %r9d, %r9d
jle 0x2308e
cmpq %r9, %rdi
je 0x23089
leal (%r8,%r9), %r11d
movl $0x10000000, %eax       # imm = 0x10000000
xorl %edx, %edx
idivl %r11d
movl %eax, -0x4(%r10,%r9,4)
movl %eax, %edx
negl %edx
cmovnsl %edx, %eax
shlq $0xe, %rax
xorl %edx, %edx
idivq %rcx
movl %eax, -0x4(%rsi,%r9,4)
decq %r9
jmp 0x23057
movl 0x7a79c(%rip), %esi     # 0x9d830
movl 0x7abb2(%rip), %ecx     # 0x9dc4c
movl 0x3a5cb0(%rip), %eax    # 0x3c8d50
movl 0x7abaa(%rip), %edx     # 0x9dc50
cmpl %ecx, %esi
jne 0x230b4
movl %ecx, %ebp
cmpl %edx, %eax
je 0x231a1
pushq $0x1
popq %rdi
movl %esi, 0x7ab8f(%rip)     # 0x9dc4c
imull $0x140, %eax, %ecx      # imm = 0x140
movslq 0x40c4d2(%rip), %rdx    # 0x42f59c
movslq %ecx, %r9
imulq %rdx, %r9
movq %r9, %rdx
shrq $0x20, %rdx
sarq $0x20, %r9
movslq %esi, %rcx
imulq %rcx, %r9
shrq %r9
movl $0x2800000, %r8d        # imm = 0x2800000
subl %r9d, %r8d
xorl %r9d, %r9d
testl %esi, %esi
movl $0x0, %r10d
cmovgl %esi, %r10d
movl %eax, 0x7ab4c(%rip)     # 0x9dc50
addl %r10d, %r10d
leaq 0x406a32(%rip), %rax    # 0x429b40
leaq 0x42ffeb(%rip), %r11    # 0x453100
cmpq %r9, %r10
je 0x23167
movl %r8d, %ebx
sarl $0x10, %ebx
movl %r8d, %ebp
movslq %ebx, %rbx
andl $0xffff, %ebp           # imm = 0xFFFF
je 0x23149
movswq 0x2(%rax,%rbx,2), %r15
movswq (%rax,%rbx,2), %rbx
subq %rbx, %r15
movl %ebp, %r14d
imulq %r15, %r14
shrq $0x10, %r14
jmp 0x23150
movzwl (%rax,%rbx,2), %ebx
xorl %r14d, %r14d
addl %edx, %r8d
movswl %bx, %ebx
addl %r14d, %ebx
shrl $0x6, %ebx
movw %bx, (%r9,%r11)
addq $0x2, %r9
jmp 0x23115
shlq $0x14, %rcx
leaq 0x431d8e(%rip), %r8     # 0x454f00
cmpq $0x10000, %rdi          # imm = 0x10000
je 0x2318c
movq %rcx, %rax
cqto
idivq %rdi
movl %eax, (%r8,%rdi,4)
incq %rdi
jmp 0x23172
imull $0x834, %esi, %eax      # imm = 0x834
movl %eax, 0x471d68(%rip)    # 0x494f00
movb $0x1, 0x471d65(%rip)    # 0x494f04
movl %esi, %ebp
movswl 0x3a5db8(%rip), %eax    # 0x3c8f60
addl $0x7, %eax
sarl $0x3, %eax
movslq %eax, %rdx
leaq 0x3a5ba8(%rip), %rdi    # 0x3c8d60
xorl %ebx, %ebx
xorl %esi, %esi
callq 0x62f0
movslq 0x3a7ba8(%rip), %rax    # 0x3cad70
decl %ebp
movzwl 0x3a99af(%rip), %ecx    # 0x3ccb80
movslq %ebp, %rdx
leaq (%rdx,%rdx), %rsi
leaq (%rsi,%rax,2), %r8
negq %rdx
leaq 0x3a5d8a(%rip), %r9     # 0x3c8f70
leaq 0x3a99a3(%rip), %r13    # 0x3ccb90
leaq 0x3a7b8c(%rip), %rdi    # 0x3cad80
leaq 0x3ab795(%rip), %r12    # 0x3ce990
leaq (%r8,%rbx,2), %r10
movzwl (%r9,%r10), %r11d
subl %ecx, %r11d
leaq (%rsi,%rbx,2), %r14
movw %r11w, (%r13,%r14)
movzwl (%rdi,%r10), %r10d
subl %ecx, %r10d
movw %r10w, (%r12,%r14)
decq %rbx
cmpq %rbx, %rdx
jne 0x231fb
movzwl (%r9,%rax,2), %edx
subl %ecx, %edx
movw %dx, 0x3a995c(%rip)     # 0x3ccb90
movzwl (%rdi,%rax,2), %eax
subl %ecx, %eax
movw %ax, 0x3ab74f(%rip)     # 0x3ce990
callq 0x49e7c
leaq 0x5d0703(%rip), %rax    # 0x5f3950
cmpl $0x0, (%rax)
je 0x23261
addq $0x8, %rsp
popq %rbx
popq %r12
popq %r13
popq %r14
popq %r15
popq %rbp
retq
leaq 0x153e48(%rip), %rax    # 0x1770b0
movslq 0x3a9911(%rip), %rcx    # 0x3ccb80
leaq 0x15400e(%rip), %rdx    # 0x177284
movslq (%rdx), %rdx
imulq %rcx, %rdx
addq (%rax), %rdx
andw $0x0, 0x3ad512(%rip)    # 0x3d079a
andw $0x0, 0x3ad50c(%rip)    # 0x3d079c
andw $0x0, 0x3ad506(%rip)    # 0x3d079e
movslq 0x3a7ad1(%rip), %rax    # 0x3cad70
andl $0x0, 0x7a9ae(%rip)     # 0x9dc54
addq %rdx, %rax
andw $0x0, 0x3ad4ef(%rip)    # 0x3d07a0
movq %rax, 0x3ad4d8(%rip)    # 0x3d0790
andl $0x0, 0x3ad4e5(%rip)    # 0x3d07a4
movzwl 0x7a56a(%rip), %eax     # 0x9d830
movw %ax, 0x3ad4cb(%rip)     # 0x3d0798
movzwl 0x3a4a77(%rip), %r14d   # 0x3c7d4c
cmpw $0x1000, %r14w          # imm = 0x1000
jl 0x232fa
addl $0xfffff000, %r14d      # imm = 0xFFFFF000
movw %r14w, 0x3a4a60(%rip)   # 0x3c7d4c
movl 0x21075e(%rip), %ebx    # 0x233a50
movl 0x21075c(%rip), %ebp    # 0x233a54
jmp 0x2332f
movl 0x210750(%rip), %ebx    # 0x233a50
movl 0x21074e(%rip), %ebp    # 0x233a54
leaq 0x3a4a3f(%rip), %rdx    # 0x3c7d4c
movl %ebx, %edi
movl %ebp, %esi
callq 0x23663
movzwl 0x3a4a2f(%rip), %eax    # 0x3c7d4c
testw %ax, %ax
js 0x23327
movl %eax, %r14d
jmp 0x2332f
movw %r14w, 0x3a4a1d(%rip)   # 0x3c7d4c
movb $0x1, %al
movb %al, 0x3ad471(%rip)     # 0x3d07a8
movb %al, 0x3ad46c(%rip)     # 0x3d07a9
movswl %r14w, %r14d
leaq 0x4(%rsp), %r15
movq %rsp, %r8
movl %r14d, %edi
movl %ebx, %esi
movl %ebp, %edx
movq %r15, %rcx
callq 0x2373c
movl 0x241702(%rip), %eax    # 0x264a60
cmpl (%r15), %eax
jge 0x2336a
movb $0x0, 0x3ad43e(%rip)    # 0x3d07a8
cmpl (%rsp), %eax
jle 0x23376
movb $0x0, 0x3ad433(%rip)    # 0x3d07a9
movl %r14d, %edi
callq 0x23867
cmpb $0x0, 0x18e6b9(%rip)    # 0x1b1a3e
je 0x2351b
movb $0x0, 0x18e6ac(%rip)    # 0x1b1a3e
movslq 0x7a497(%rip), %rax     # 0x9d830
leal -0x1(%rax), %ecx
andl $0x0, 0x3ad40d(%rip)    # 0x3d07b0
movl %ecx, 0x3ad403(%rip)    # 0x3d07ac
movswq 0x3ad3e9(%rip), %rdx    # 0x3d079a
movl %edx, %esi
xorl %edx, %edx
leaq 0x20e694(%rip), %rdi    # 0x231a50
leaq 0x18e68d(%rip), %r8     # 0x1b1a50
leaq 0x2416a6(%rip), %r9     # 0x264a70
leaq 0x2456af(%rip), %r10    # 0x268a80
leaq (,%rsi,4), %r11
testl %esi, %esi
jle 0x2341c
movswq -0x2(%rdi,%rsi,2), %rbx
decq %rsi
shlq $0x5, %rbx
addq $-0x4, %r11
cmpw $0x0, 0xc(%rbx,%r8)
js 0x233d9
movl (%r11,%r9), %ebx
cmpl %ecx, %ebx
jge 0x23407
movl %ebx, 0x3ad3a7(%rip)    # 0x3d07ac
movl %ebx, %ecx
movl (%r11,%r10), %r11d
cmpl %edx, %r11d
jle 0x233d1
movl %r11d, 0x3ad399(%rip)   # 0x3d07b0
movl %r11d, %edx
jmp 0x233d1
movzwl 0x3ad375(%rip), %esi    # 0x3d0798
xorl %edi, %edi
testl %ecx, %ecx
cmovlel %edi, %ecx
addl %ecx, %ecx
cmpq %rdi, %rcx
je 0x23459
movzwl (%rdi,%r13), %r8d
cmpw (%rdi,%r12), %r8w
jg 0x23453
andw $0x0, (%rdi,%r12)
movw $0x1, (%rdi,%r13)
decl %esi
movw %si, 0x3ad345(%rip)     # 0x3d0798
addq $0x2, %rdi
jmp 0x2342c
movslq %edx, %rcx
incq %rcx
cmpq %rax, %rcx
jge 0x23498
movzwl (%r13,%rcx,2), %edi
leaq 0x1(%rcx), %rdx
cmpw (%r12,%rcx,2), %di
movq %rdx, %rcx
jg 0x2345f
movw $0x1, -0x2(%r13,%rdx,2)
andw $0x0, -0x2(%r12,%rdx,2)
decl %esi
movw %si, 0x3ad308(%rip)     # 0x3d0798
decq %rdx
movq %rdx, %rcx
jmp 0x2345c
xorl %edi, %edi
callq 0x23f79
movzwl 0x3ad2f6(%rip), %eax    # 0x3d079c
decl %eax
movw %ax, 0x3ad2ed(%rip)     # 0x3d079c
movswq %ax, %rcx
leaq 0x3ad306(%rip), %rdx    # 0x3d07c0
movzwl (%rdx,%rcx,2), %edx
movw %dx, 0x3ad2fb(%rip)     # 0x3d07c0
leaq 0x3af2f4(%rip), %rdx    # 0x3d27c0
movzwl (%rdx,%rcx,2), %ecx
movw %cx, 0x3af2e9(%rip)     # 0x3d27c0
movslq 0x3ad2ce(%rip), %rcx    # 0x3d07ac
movzwl (%r13,%rcx,2), %edx
movslq 0x3ad2c5(%rip), %rsi    # 0x3d07b0
movzwl (%r13,%rsi,2), %edi
cmpw %di, %dx
cmovll %edx, %edi
movswl %di, %edx
movl %edx, 0x3b12c0(%rip)    # 0x3d47c0
movzwl (%r12,%rcx,2), %ecx
movzwl (%r12,%rsi,2), %edx
cmpw %dx, %cx
cmovgl %ecx, %edx
movswl %dx, %ecx
movl %ecx, 0x3b12ab(%rip)    # 0x3d47c4
jmp 0x23522
movzwl 0x3ad27a(%rip), %eax    # 0x3d079c
leaq 0x3b12a7(%rip), %rbx    # 0x3d47d0
testw %ax, %ax
jle 0x23252
cmpw $0x0, 0x3ad25e(%rip)    # 0x3d0798
jle 0x23252
addl $0x3, %eax
movzwl %ax, %esi
shrl $0x2, %esi
xorl %ebp, %ebp
movq %rbx, %rdi
xorl %edx, %edx
callq 0x444af
movb $0x1, 0x3b1274(%rip)    # 0x3d47d0
movswq 0x3ad238(%rip), %r13    # 0x3d079c
pushq $0x1
popq %r14
cmpq %r13, %r14
jge 0x23591
movl %r14d, %edi
movl %ebp, %esi
callq 0x26318
testl %eax, %eax
js 0x2358c
movb $0x1, (%r14,%rbx)
jne 0x2358c
movslq %ebp, %rax
movb $0x1, (%rax,%rbx)
movl %r14d, %ebp
incq %r14
jmp 0x23568
xorl %r14d, %r14d
movslq %ebp, %r12
cmpl %r13d, %r14d
jge 0x235cd
movslq %r14d, %r15
cmpb $0x0, (%r15,%rbx)
je 0x235ab
incl %r14d
jmp 0x23594
movl %r14d, %edi
movl %ebp, %esi
callq 0x26318
testl %eax, %eax
js 0x235a6
movb $0x1, (%r15,%rbx)
jne 0x235a6
movb $0x1, (%r12,%rbx)
movl %r14d, %ebp
xorl %r14d, %r14d
jmp 0x235a6
movl %ebp, %edi
callq 0x23f79
cmpb $0x0, 0x381f05(%rip)    # 0x3a54e0
leaq 0x20e46e(%rip), %rsi    # 0x231a50
leaq 0x7a1b7(%rip), %rdi     # 0x9d7a0
leaq 0x3816f0(%rip), %r8     # 0x3a4ce0
leaq 0x3b51d9(%rip), %r9     # 0x3d87d0
je 0x2362a
leaq 0x3ad1c0(%rip), %rax    # 0x3d07c0
leaq (%rax,%r12,2), %rax
movswq (%rax), %rax
testq %rax, %rax
js 0x2362a
movswq (%rsi,%rax,2), %rcx
movl %ecx, %edx
andl $0x7, %edx
movb (%rdx,%rdi), %dl
sarl $0x3, %ecx
movslq %ecx, %rcx
orb %dl, (%rcx,%r8)
leaq (%r9,%rax,2), %rax
jmp 0x23604
movzwl 0x3ad16b(%rip), %eax    # 0x3d079c
decl %eax
movw %ax, 0x3ad162(%rip)     # 0x3d079c
movswq %ax, %rcx
leaq 0x3ad17b(%rip), %rsi    # 0x3d07c0
movzwl (%rsi,%rcx,2), %edx
movw %dx, (%rsi,%r12,2)
leaq 0x3af16b(%rip), %rdx    # 0x3d27c0
movzwl (%rdx,%rcx,2), %ecx
movw %cx, (%rdx,%r12,2)
jmp 0x23529