// File: /workspace/github_c_makefile_star2_O0/arkanis[P]process-map/map.c
// Function: PlotRangeElfSymbols
void PlotRangeElfSymbols(AddrRange ranges[], size_t rangeCount, size_t hilbertCurveOrder, Font labelFont) {
	// Load the ELF symbols for each region. If there are any.
	char* prevRangeFilePath = NULL;
	ElfSymbols prevRangeSymbols = { 0 };
	for (size_t i = 0; i < rangeCount; i++) {
		AddrRange* range = &ranges[i];
		uint64_t rangeStartOffset = range->fileOffset;
		uint64_t rangeEndOffset = range->fileOffset + (range->endAddr - range->startAddr);
		
		// Reuse the ELF symbols of the previous range if the filePath is the same.
		// Just some cheap caching to avoid loading the same ELF for successive ranges.
		ElfSymbols symbols = { 0 };
		if ( range->filePath && prevRangeFilePath && strcmp(range->filePath, prevRangeFilePath) == 0 ) {
			symbols = prevRangeSymbols;
		} else {
			symbols = LoadElfSymbols(range->filePath);
			UnloadElfSymbols(&prevRangeSymbols);
			prevRangeSymbols = symbols;
		}
		
		// Check if any of the ELFs symbols are within the area mapped in the current region. Skip region if not.
		size_t symbolsInRange = 0;
		for (size_t s = 0; s < symbols.count; s++) {
			if ( symbols.at[s].fileOffset >= rangeStartOffset && symbols.at[s].fileOffset < rangeEndOffset )
				symbolsInRange++;
		}
		
		if (symbolsInRange == 0)
			continue;
		
		// Create a symbol map texture that covers only this address ranges area
		size_t mapSideLength = pow(2, hilbertCurveOrder);
		size_t symbolMapHilberCurveOrder = hilbertCurveOrder + 3;
		size_t symbolMapScale = pow(2, 3);
		Image symbolMapImage = GenImageColor(range->boundingBox.width * symbolMapScale, range->boundingBox.height * symbolMapScale, BLANK);
		uint32_t* symbolMapPixels = symbolMapImage.data;
		
		size_t pixelsPerPage = symbolMapScale * symbolMapScale;
		size_t bytesPerPixel = pageSize / pixelsPerPage;
		uint64_t rangeStartPixel = range->startPage * pixelsPerPage;
		
		for (size_t s = 0; s < symbols.count; s++) {
			if ( !(symbols.at[s].fileOffset >= rangeStartOffset && symbols.at[s].fileOffset < rangeEndOffset) )
				continue;
			
			// Symbol is in the file area mapped into this address range
			uint64_t symbolStartPixel = rangeStartPixel + (symbols.at[s].fileOffset - rangeStartOffset) / bytesPerPixel;
			uint64_t symbolEndPixel = symbolStartPixel + symbols.at[s].size / bytesPerPixel;
			
			// Assign the pixels 
			float xMin = mapSideLength * symbolMapScale, xMax = 0, yMin = mapSideLength * symbolMapScale, yMax = 0;
			for (uint64_t pixel = symbolStartPixel; pixel < symbolEndPixel; pixel++) {
				int globalX, globalY;
				HilberCurveDistToPos(symbolMapHilberCurveOrder, pixel, &globalX, &globalY);
				int x = globalX - range->boundingBox.x * symbolMapScale;
				int y = globalY - range->boundingBox.y * symbolMapScale;
				
				symbolMapPixels[y * symbolMapImage.width + x] = s + 1;
				
				if (globalX < xMin) xMin = globalX;
				if (globalX > xMax) xMax = globalX;
				if (globalY < yMin) yMin = globalY;
				if (globalY > yMax) yMax = globalY;
			}
			
			Rectangle symbolBoundingBox = (Rectangle){
				.x = xMin / symbolMapScale, .y = yMin / symbolMapScale,
				.width = (xMax - xMin + 1) / symbolMapScale,
				.height = (yMax - yMin + 1) / symbolMapScale
			};
			
			range->symbolCount++;
			range->symbolLabels = realloc(range->symbolLabels, range->symbolCount * sizeof(range->symbolLabels[0]));
			range->symbolLabels[range->symbolCount - 1] = LabelFor(strdup(symbols.at[s].name), symbolBoundingBox, labelFont);
		}
		
		range->symbolMap = LoadTextureFromImage(symbolMapImage);
	}
	UnloadElfSymbols(&prevRangeSymbols);
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x280, %rsp            # imm = 0x280
leaq 0x10(%rbp), %rax
movq %rax, -0x198(%rbp)
movq %rdi, -0x8(%rbp)
movq %rsi, -0x10(%rbp)
movq %rdx, -0x18(%rbp)
movq $0x0, -0x20(%rbp)
leaq -0x40(%rbp), %rdi
xorl %esi, %esi
movl $0x20, %edx
callq 0x6060
movq $0x0, -0x48(%rbp)
movq -0x48(%rbp), %rax
cmpq -0x10(%rbp), %rax
jae 0x15fe6
movq -0x8(%rbp), %rax
imulq $0xa0, -0x48(%rbp), %rcx
addq %rcx, %rax
movq %rax, -0x50(%rbp)
movq -0x50(%rbp), %rax
movq 0x28(%rax), %rax
movq %rax, -0x58(%rbp)
movq -0x50(%rbp), %rax
movq 0x28(%rax), %rax
movq -0x50(%rbp), %rcx
movq 0x8(%rcx), %rcx
movq -0x50(%rbp), %rdx
subq (%rdx), %rcx
addq %rcx, %rax
movq %rax, -0x60(%rbp)
leaq -0x80(%rbp), %rdi
xorl %esi, %esi
movl $0x20, %edx
callq 0x6060
movq -0x50(%rbp), %rax
cmpq $0x0, 0x20(%rax)
je 0x155a7
cmpq $0x0, -0x20(%rbp)
je 0x155a7
movq -0x50(%rbp), %rax
movq 0x20(%rax), %rdi
movq -0x20(%rbp), %rsi
callq 0x64e0
cmpl $0x0, %eax
jne 0x155a7
movq -0x40(%rbp), %rax
movq %rax, -0x80(%rbp)
movq -0x38(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x30(%rbp), %rax
movq %rax, -0x70(%rbp)
movq -0x28(%rbp), %rax
movq %rax, -0x68(%rbp)
jmp 0x15610
movq -0x50(%rbp), %rax
movq 0x20(%rax), %rsi
leaq -0xa0(%rbp), %rdi
callq 0x16e80
movq -0xa0(%rbp), %rax
movq %rax, -0x80(%rbp)
movq -0x98(%rbp), %rax
movq %rax, -0x78(%rbp)
movq -0x90(%rbp), %rax
movq %rax, -0x70(%rbp)
movq -0x88(%rbp), %rax
movq %rax, -0x68(%rbp)
leaq -0x40(%rbp), %rdi
callq 0x172a0
movq -0x80(%rbp), %rax
movq %rax, -0x40(%rbp)
movq -0x78(%rbp), %rax
movq %rax, -0x38(%rbp)
movq -0x70(%rbp), %rax
movq %rax, -0x30(%rbp)
movq -0x68(%rbp), %rax
movq %rax, -0x28(%rbp)
movq $0x0, -0xa8(%rbp)
movq $0x0, -0xb0(%rbp)
movq -0xb0(%rbp), %rax
cmpq -0x68(%rbp), %rax
jae 0x1568d
movq -0x70(%rbp), %rax
imulq $0x18, -0xb0(%rbp), %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
cmpq -0x58(%rbp), %rax
jb 0x15677
movq -0x70(%rbp), %rax
imulq $0x18, -0xb0(%rbp), %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
cmpq -0x60(%rbp), %rax
jae 0x15677
movq -0xa8(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xa8(%rbp)
jmp 0x15679
movq -0xb0(%rbp), %rax
addq $0x1, %rax
movq %rax, -0xb0(%rbp)
jmp 0x15626
cmpq $0x0, -0xa8(%rbp)
jne 0x1569c
jmp 0x15fd5
movaps 0x769fd(%rip), %xmm0    # 0x8c0a0
movq -0x18(%rbp), %xmm1
punpckldq %xmm0, %xmm1    # xmm1 = xmm1[0],xmm0[0],xmm1[1],xmm0[1]
movapd 0x769fc(%rip), %xmm0    # 0x8c0b0
subpd %xmm0, %xmm1
movaps %xmm1, %xmm0
unpckhpd %xmm1, %xmm1            # xmm1 = xmm1[1,1]
addsd %xmm0, %xmm1
movsd 0x76a35(%rip), %xmm0    # 0x8c100
movsd %xmm0, -0x1b8(%rbp)
callq 0x6750
movaps %xmm0, %xmm1
movsd -0x1b8(%rbp), %xmm0
movaps %xmm1, %xmm2
cvttsd2si %xmm2, %rax
movq %rax, %rdx
sarq $0x3f, %rdx
movsd 0x769fe(%rip), %xmm2    # 0x8c0f8
movsd %xmm2, -0x1b0(%rbp)
subsd %xmm2, %xmm1
cvttsd2si %xmm1, %rcx
andq %rdx, %rcx
orq %rcx, %rax
movq %rax, -0xb8(%rbp)
movq -0x18(%rbp), %rax
addq $0x3, %rax
movq %rax, -0xc0(%rbp)
movsd 0x769e1(%rip), %xmm1    # 0x8c110
callq 0x6750
movsd -0x1b0(%rbp), %xmm1
movaps %xmm0, %xmm2
cvttsd2si %xmm2, %rax
movq %rax, %rdx
sarq $0x3f, %rdx
subsd %xmm1, %xmm0
cvttsd2si %xmm0, %rcx
andq %rdx, %rcx
orq %rcx, %rax
movq %rax, -0xc8(%rbp)
movq -0x50(%rbp), %rax
movq %rax, -0x1a8(%rbp)
movq -0xc8(%rbp), %rax
movq %rax, %rdx
shrq %rdx
movl %eax, %ecx
andl $0x1, %ecx
orq %rdx, %rcx
cvtsi2ss %rcx, %xmm0
addss %xmm0, %xmm0
cvtsi2ss %rax, %xmm1
movss %xmm1, -0x1a0(%rbp)
testq %rax, %rax
movss %xmm0, -0x19c(%rbp)
js 0x157b4
movss -0x1a0(%rbp), %xmm0
movss %xmm0, -0x19c(%rbp)
movq -0x1a8(%rbp), %rax
movss -0x19c(%rbp), %xmm1
movss 0x4c(%rax), %xmm2
movss 0x50(%rax), %xmm0
mulss %xmm1, %xmm2
cvttss2si %xmm2, %esi
mulss %xmm1, %xmm0
cvttss2si %xmm0, %edx
movb $0x0, -0xe4(%rbp)
movb $0x0, -0xe3(%rbp)
movb $0x0, -0xe2(%rbp)
movb $0x0, -0xe1(%rbp)
movl -0xe4(%rbp), %ecx
leaq -0xe0(%rbp), %rdi
callq 0x47770
movq -0xe0(%rbp), %rax
movq %rax, -0xf0(%rbp)
movq -0xc8(%rbp), %rax
imulq -0xc8(%rbp), %rax
movq %rax, -0xf8(%rbp)
movl $0x1000, %eax           # imm = 0x1000
xorl %ecx, %ecx
movl %ecx, %edx
divq -0xf8(%rbp)
movq %rax, -0x100(%rbp)
movq -0x50(%rbp), %rax
movq 0x30(%rax), %rax
imulq -0xf8(%rbp), %rax
movq %rax, -0x108(%rbp)
movq $0x0, -0x110(%rbp)
movq -0x110(%rbp), %rax
cmpq -0x68(%rbp), %rax
jae 0x15f72
movq -0x70(%rbp), %rax
imulq $0x18, -0x110(%rbp), %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
cmpq -0x58(%rbp), %rax
jb 0x158ab
movq -0x70(%rbp), %rax
imulq $0x18, -0x110(%rbp), %rcx
addq %rcx, %rax
movq 0x8(%rax), %rax
cmpq -0x60(%rbp), %rax
jb 0x158b0
jmp 0x15f5b
movq -0x108(%rbp), %rax
movq %rax, -0x1d0(%rbp)
movq -0x70(%rbp), %rax
movq -0x110(%rbp), %rcx
leaq (%rcx,%rcx,2), %rcx
movq 0x8(%rax,%rcx,8), %rax
movq -0x58(%rbp), %rcx
subq %rcx, %rax
movq -0x100(%rbp), %rcx
xorl %edx, %edx
movq %rdx, -0x1d8(%rbp)
divq %rcx
movq -0x1d8(%rbp), %rdx
movq %rax, %rcx
movq -0x1d0(%rbp), %rax
addq %rcx, %rax
movq %rax, -0x118(%rbp)
movq -0x118(%rbp), %rax
movq %rax, -0x1c8(%rbp)
movq -0x70(%rbp), %rax
movq -0x110(%rbp), %rcx
leaq (%rcx,%rcx,2), %rcx
movq 0x10(%rax,%rcx,8), %rax
movq -0x100(%rbp), %rcx
divq %rcx
movq %rax, %rcx
movq -0x1c8(%rbp), %rax
addq %rcx, %rax
movq %rax, -0x120(%rbp)
movq -0xb8(%rbp), %rax
movq -0xc8(%rbp), %rcx
imulq %rcx, %rax
movq %rax, %rdx
shrq %rdx
movl %eax, %ecx
andl $0x1, %ecx
orq %rdx, %rcx
cvtsi2ss %rcx, %xmm0
addss %xmm0, %xmm0
cvtsi2ss %rax, %xmm1
movss %xmm1, -0x1c0(%rbp)
testq %rax, %rax
movss %xmm0, -0x1bc(%rbp)
js 0x1599a
movss -0x1c0(%rbp), %xmm0
movss %xmm0, -0x1bc(%rbp)
movss -0x1bc(%rbp), %xmm0
movss %xmm0, -0x124(%rbp)
movl $0x0, -0x128(%rbp)
movq -0xb8(%rbp), %rax
movq -0xc8(%rbp), %rcx
imulq %rcx, %rax
movq %rax, %rdx
shrq %rdx
movl %eax, %ecx
andl $0x1, %ecx
orq %rdx, %rcx
cvtsi2ss %rcx, %xmm0
addss %xmm0, %xmm0
cvtsi2ss %rax, %xmm1
movss %xmm1, -0x1e0(%rbp)
testq %rax, %rax
movss %xmm0, -0x1dc(%rbp)
js 0x15a07
movss -0x1e0(%rbp), %xmm0
movss %xmm0, -0x1dc(%rbp)
movss -0x1dc(%rbp), %xmm0
movss %xmm0, -0x12c(%rbp)
xorps %xmm0, %xmm0
movss %xmm0, -0x130(%rbp)
movq -0x118(%rbp), %rax
movq %rax, -0x138(%rbp)
movq -0x138(%rbp), %rax
cmpq -0x120(%rbp), %rax
jae 0x15c6a
movq -0xc0(%rbp), %rdi
movq -0x138(%rbp), %rsi
leaq -0x13c(%rbp), %rdx
leaq -0x140(%rbp), %rcx
callq 0x16d60
cvtsi2ssl -0x13c(%rbp), %xmm0
movss %xmm0, -0x1f0(%rbp)
movq -0x50(%rbp), %rax
movss 0x44(%rax), %xmm0
movss %xmm0, -0x1ec(%rbp)
movq -0xc8(%rbp), %rax
movq %rax, %rdx
shrq %rdx
movl %eax, %ecx
andl $0x1, %ecx
orq %rdx, %rcx
cvtsi2ss %rcx, %xmm0
addss %xmm0, %xmm0
cvtsi2ss %rax, %xmm1
movss %xmm1, -0x1e8(%rbp)
testq %rax, %rax
movss %xmm0, -0x1e4(%rbp)
js 0x15ace
movss -0x1e8(%rbp), %xmm0
movss %xmm0, -0x1e4(%rbp)
movss -0x1f0(%rbp), %xmm0
movss -0x1ec(%rbp), %xmm1
movss -0x1e4(%rbp), %xmm2
mulss %xmm2, %xmm1
subss %xmm1, %xmm0
cvttss2si %xmm0, %eax
movl %eax, -0x144(%rbp)
cvtsi2ssl -0x140(%rbp), %xmm0
movss %xmm0, -0x200(%rbp)
movq -0x50(%rbp), %rax
movss 0x48(%rax), %xmm0
movss %xmm0, -0x1fc(%rbp)
movq -0xc8(%rbp), %rax
movq %rax, %rdx
shrq %rdx
movl %eax, %ecx
andl $0x1, %ecx
orq %rdx, %rcx
cvtsi2ss %rcx, %xmm0
addss %xmm0, %xmm0
cvtsi2ss %rax, %xmm1
movss %xmm1, -0x1f8(%rbp)
testq %rax, %rax
movss %xmm0, -0x1f4(%rbp)
js 0x15b61
movss -0x1f8(%rbp), %xmm0
movss %xmm0, -0x1f4(%rbp)
movss -0x200(%rbp), %xmm1
movss -0x1fc(%rbp), %xmm0
movss -0x1f4(%rbp), %xmm2
movd %xmm0, %eax
xorl $0x80000000, %eax       # imm = 0x80000000
movd %eax, %xmm0
mulss %xmm2, %xmm0
addss %xmm1, %xmm0
cvttss2si %xmm0, %eax
movl %eax, -0x148(%rbp)
movq -0x110(%rbp), %rax
addq $0x1, %rax
movl %eax, %edx
movq -0xf0(%rbp), %rax
movl -0x148(%rbp), %ecx
imull -0xd8(%rbp), %ecx
addl -0x144(%rbp), %ecx
movslq %ecx, %rcx
movl %edx, (%rax,%rcx,4)
cvtsi2ssl -0x13c(%rbp), %xmm1
movss -0x124(%rbp), %xmm0
ucomiss %xmm1, %xmm0
jbe 0x15bea
cvtsi2ssl -0x13c(%rbp), %xmm0
movss %xmm0, -0x124(%rbp)
cvtsi2ssl -0x13c(%rbp), %xmm0
ucomiss -0x128(%rbp), %xmm0
jbe 0x15c0b
cvtsi2ssl -0x13c(%rbp), %xmm0
movss %xmm0, -0x128(%rbp)
cvtsi2ssl -0x140(%rbp), %xmm1
movss -0x12c(%rbp), %xmm0
ucomiss %xmm1, %xmm0
jbe 0x15c30
cvtsi2ssl -0x140(%rbp), %xmm0
movss %xmm0, -0x12c(%rbp)
cvtsi2ssl -0x140(%rbp), %xmm0
ucomiss -0x130(%rbp), %xmm0
jbe 0x15c51
cvtsi2ssl -0x140(%rbp), %xmm0
movss %xmm0, -0x130(%rbp)
jmp 0x15c53
movq -0x138(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x138(%rbp)
jmp 0x15a30
movss -0x124(%rbp), %xmm0
movss %xmm0, -0x20c(%rbp)
movq -0xc8(%rbp), %rax
movq %rax, %rdx
shrq %rdx
movl %eax, %ecx
andl $0x1, %ecx
orq %rdx, %rcx
cvtsi2ss %rcx, %xmm0
addss %xmm0, %xmm0
cvtsi2ss %rax, %xmm1
movss %xmm1, -0x208(%rbp)
testq %rax, %rax
movss %xmm0, -0x204(%rbp)
js 0x15cc2
movss -0x208(%rbp), %xmm0
movss %xmm0, -0x204(%rbp)
movss -0x20c(%rbp), %xmm0
movss -0x204(%rbp), %xmm1
divss %xmm1, %xmm0
movss %xmm0, -0x158(%rbp)
movss -0x12c(%rbp), %xmm0
movss %xmm0, -0x218(%rbp)
movq -0xc8(%rbp), %rax
movq %rax, %rdx
shrq %rdx
movl %eax, %ecx
andl $0x1, %ecx
orq %rdx, %rcx
cvtsi2ss %rcx, %xmm0
addss %xmm0, %xmm0
cvtsi2ss %rax, %xmm1
movss %xmm1, -0x214(%rbp)
testq %rax, %rax
movss %xmm0, -0x210(%rbp)
js 0x15d36
movss -0x214(%rbp), %xmm0
movss %xmm0, -0x210(%rbp)
movss -0x218(%rbp), %xmm0
movss -0x210(%rbp), %xmm1
divss %xmm1, %xmm0
movss %xmm0, -0x154(%rbp)
movss -0x128(%rbp), %xmm0
movss -0x124(%rbp), %xmm1
subss %xmm1, %xmm0
movss 0x76296(%rip), %xmm1    # 0x8c004
movss %xmm1, -0x228(%rbp)
addss %xmm1, %xmm0
movss %xmm0, -0x224(%rbp)
movq -0xc8(%rbp), %rax
movq %rax, %rdx
shrq %rdx
movl %eax, %ecx
andl $0x1, %ecx
orq %rdx, %rcx
cvtsi2ss %rcx, %xmm0
addss %xmm0, %xmm0
cvtsi2ss %rax, %xmm1
movss %xmm1, -0x220(%rbp)
testq %rax, %rax
movss %xmm0, -0x21c(%rbp)
js 0x15dca
movss -0x220(%rbp), %xmm0
movss %xmm0, -0x21c(%rbp)
movss -0x228(%rbp), %xmm1
movss -0x224(%rbp), %xmm0
movss -0x21c(%rbp), %xmm2
divss %xmm2, %xmm0
movss %xmm0, -0x150(%rbp)
movss -0x130(%rbp), %xmm0
movss -0x12c(%rbp), %xmm2
subss %xmm2, %xmm0
addss %xmm1, %xmm0
movss %xmm0, -0x234(%rbp)
movq -0xc8(%rbp), %rax
movq %rax, %rdx
shrq %rdx
movl %eax, %ecx
andl $0x1, %ecx
orq %rdx, %rcx
cvtsi2ss %rcx, %xmm0
addss %xmm0, %xmm0
cvtsi2ss %rax, %xmm1
movss %xmm1, -0x230(%rbp)
testq %rax, %rax
movss %xmm0, -0x22c(%rbp)
js 0x15e56
movss -0x230(%rbp), %xmm0
movss %xmm0, -0x22c(%rbp)
movss -0x234(%rbp), %xmm0
movss -0x22c(%rbp), %xmm1
divss %xmm1, %xmm0
movss %xmm0, -0x14c(%rbp)
movq -0x50(%rbp), %rax
movq 0x90(%rax), %rcx
incq %rcx
movq %rcx, 0x90(%rax)
movq -0x50(%rbp), %rax
movq 0x90(%rax), %rsi
movq 0x98(%rax), %rdi
shlq $0x5, %rsi
callq 0x66c0
movq %rax, %rcx
movq -0x50(%rbp), %rax
movq %rcx, 0x98(%rax)
movq -0x50(%rbp), %rcx
movq 0x90(%rcx), %rax
movq 0x98(%rcx), %rcx
shlq $0x5, %rax
leaq -0x20(%rax,%rcx), %rax
movq %rax, -0x240(%rbp)
movq -0x70(%rbp), %rax
movq -0x110(%rbp), %rcx
leaq (%rcx,%rcx,2), %rcx
movq (%rax,%rcx,8), %rdi
callq 0x64b0
movq %rax, %rsi
movq -0x198(%rbp), %rax
movsd -0x158(%rbp), %xmm0
movsd -0x150(%rbp), %xmm1
movups (%rax), %xmm2
movups 0x10(%rax), %xmm3
movups 0x20(%rax), %xmm4
movq %rsp, %rax
movups %xmm4, 0x20(%rax)
movups %xmm3, 0x10(%rax)
movups %xmm2, (%rax)
leaq -0x178(%rbp), %rdi
callq 0x16bb0
movq -0x240(%rbp), %rax
movq -0x178(%rbp), %rcx
movq %rcx, (%rax)
movq -0x170(%rbp), %rcx
movq %rcx, 0x8(%rax)
movq -0x168(%rbp), %rcx
movq %rcx, 0x10(%rax)
movq -0x160(%rbp), %rcx
movq %rcx, 0x18(%rax)
movq -0x110(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x110(%rbp)
jmp 0x15868
movq -0x50(%rbp), %rax
movq %rax, -0x248(%rbp)
leaq -0x18c(%rbp), %rdi
leaq -0xe0(%rbp), %rax
movq (%rax), %rcx
movq %rcx, (%rsp)
movq 0x8(%rax), %rcx
movq %rcx, 0x8(%rsp)
movq 0x10(%rax), %rax
movq %rax, 0x10(%rsp)
callq 0x4f700
movq -0x248(%rbp), %rax
movq -0x18c(%rbp), %rcx
movq %rcx, 0x78(%rax)
movq -0x184(%rbp), %rcx
movq %rcx, 0x80(%rax)
movl -0x17c(%rbp), %ecx
movl %ecx, 0x88(%rax)
movq -0x48(%rbp), %rax
addq $0x1, %rax
movq %rax, -0x48(%rbp)
jmp 0x15502
leaq -0x40(%rbp), %rdi
callq 0x172a0
addq $0x280, %rsp            # imm = 0x280
popq %rbp
retq
nopl (%rax,%rax)