
.intel_syntax noprefix

.global FindToken
.global UpdateCurPC
.global GetCurrOffset
.global GetCurrSegAlign
.global GrpDir
.global UpdateWordSize
.global SetOfssize
.global DefineFlatGroup
.global GetSegIdx
.global GetGroup
.global GetSymOfssize
.global SetSymSegOfs
.global TypeFromClassName
.global CreateIntSegment
.global EndsDir
.global SegmentDir
.global SortSegments
.global SegmentModuleExit
.global SegmentFini
.global SegmentInit
.global SegmentSaveState
.global CV8Label
.global symCurSeg

.extern CreateLabel
.extern EndstructDirective
.extern CurrStruct
.extern LstWrite
.extern SegAssumeTable
.extern UseSavedState
.extern omf_FlushCurrSeg
.extern omf_OutSelect
.extern EvalOperand
.extern ModelSimSegmExit
.extern GetCodeClass
.extern Set64Bit
.extern sym_remove_table
.extern sym_add_table
.extern SymTables
.extern FixupRelease
.extern LclAlloc
.extern QAddItem
.extern tstrupr
.extern asmerr
.extern write_to_file
.extern Options
.extern Parse_Pass
.extern SymCmpFunc
.extern SymFindID
.extern SymFind
.extern SymGCreate
.extern SymCreate
.extern SymFree
.extern SymAlloc
.extern tstricmp
.extern tstrcmp
.extern tstrlen
.extern tmemcmp
.extern tmemcpy


.SECTION .text
	.ALIGN	16

FindToken:
	mov	qword ptr [rsp+0x8], rcx
	mov	qword ptr [rsp+0x18], r8
	push	rsi
	push	rdi
	push	rbp
	mov	rbp, rsp
	sub	rsp, 32
	mov	rsi, rdx
	xor	edi, edi
$_001:	cmp	edi, dword ptr [rbp+0x30]
	jge	$_003
	mov	rdx, qword ptr [rbp+0x20]
	mov	rcx, qword ptr [rsi]
	call	tstricmp@PLT
	test	eax, eax
	jnz	$_002
	mov	eax, edi
	jmp	$_004

$_002:	inc	edi
	add	rsi, 8
	jmp	$_001

$_003:	mov	rax, -1
$_004:	leave
	pop	rdi
	pop	rsi
	ret

UpdateCurPC:
	push	rbp
	mov	rbp, rsp
	sub	rsp, 32
	mov	rdx, qword ptr [CurrStruct+rip]
	test	rdx, rdx
	jz	$_006
	mov	byte ptr [rcx+0x1E], 192
	mov	qword ptr [rcx+0x40], 0
	mov	eax, dword ptr [rdx+0x30]
	cmp	qword ptr [rdx+0x80], 0
	jz	$_005
	mov	rdx, qword ptr [rdx+0x80]
	add	eax, dword ptr [rdx+0x30]
$_005:	mov	dword ptr [rcx+0x30], eax
	jmp	$_008

$_006:	cmp	qword ptr [r14+0x38], 0
	jz	$_007
	mov	byte ptr [rcx+0x1E], 129
	mov	rax, qword ptr [r14+0x38]
	mov	qword ptr [rcx+0x40], rax
	call	GetCurrOffset
	mov	dword ptr [rcx+0x30], eax
	jmp	$_008

$_007:	mov	ecx, 2034
	call	asmerr@PLT
$_008:	leave
	ret

$_009:
	push	rbp
	mov	rbp, rsp
	sub	rsp, 32
	mov	rdx, rcx
	lea	rcx, [r14+0x248]
	call	QAddItem@PLT
	leave
	ret

$_010:
	push	rsi
	push	rdi
	sub	rsp, 40
	mov	rdi, qword ptr [r14+0x248]
$_011:	test	rdi, rdi
	jz	$_013
	mov	rsi, qword ptr [rdi]
	mov	rcx, qword ptr [rdi+0x8]
	cmp	byte ptr [rcx+0x1D], 11
	jnz	$_012
	call	SymFree@PLT
$_012:	mov	rdi, rsi
	jmp	$_011

$_013:
	add	rsp, 40
	pop	rdi
	pop	rsi
	ret

$_014:
	push	rsi
	push	rdi
	mov	rcx, qword ptr [symCurSeg+rip]
	mov	rdi, qword ptr [r14+0x38]
	lea	rax, [SegAssumeTable+rip]
	lea	rsi, [rax+0x10]
	test	rdi, rdi
	jnz	$_015
	mov	qword ptr [rsi], 0
	mov	byte ptr [rsi+0x9], 0
	mov	byte ptr [rsi+0x8], 1
	lea	rax, [DS001A+0x5+rip]
	mov	qword ptr [rcx+0x30], rax
	jmp	$_019

$_015:	mov	byte ptr [rsi+0x9], 0
	mov	byte ptr [rsi+0x8], 0
	mov	rdx, qword ptr [rdi+0x78]
	cmp	qword ptr [rdx], 0
	jz	$_017
	mov	rax, qword ptr [rdx]
	mov	qword ptr [rsi], rax
	cmp	rax, qword ptr [r14+0x40]
	jnz	$_016
	mov	byte ptr [rsi+0x9], 1
$_016:	jmp	$_018

$_017:	mov	qword ptr [rsi], rdi
$_018:	mov	rax, qword ptr [rdi+0x8]
	mov	qword ptr [rcx+0x30], rax
$_019:	pop	rdi
	pop	rsi
	ret

$_020:
	push	rbp
	mov	rbp, rsp
	sub	rsp, 32
	mov	edx, dword ptr [stkindex+rip]
	cmp	edx, 20
	jc	$_021
	mov	ecx, 1007
	call	asmerr@PLT
	jmp	$_022

$_021:	inc	dword ptr [stkindex+rip]
	mov	rax, qword ptr [r14+0x38]
	mov	qword ptr [r14+0x38], rcx
	lea	rcx, [SegStack+rip]
	mov	qword ptr [rcx+rdx*8], rax
	call	$_014
$_022:	leave
	ret

$_023:
	cmp	dword ptr [stkindex+rip], 0
	jz	$_024
	dec	dword ptr [stkindex+rip]
	mov	ecx, dword ptr [stkindex+rip]
	lea	rdx, [SegStack+rip]
	mov	rax, qword ptr [rdx+rcx*8]
	mov	qword ptr [r14+0x38], rax
	call	$_014
$_024:	ret

GetCurrOffset:
	mov	rax, qword ptr [r14+0x38]
	test	rax, rax
	jz	$_025
	mov	rax, qword ptr [rax+0x78]
	mov	eax, dword ptr [rax+0xC]
$_025:	ret

GetCurrSegAlign:
	mov	rax, qword ptr [r14+0x38]
	test	rax, rax
	jz	$_027
	mov	rcx, qword ptr [rax+0x78]
	cmp	byte ptr [rcx+0x1F], 255
	jnz	$_026
	mov	eax, 16
	jmp	$_027

$_026:	mov	cl, byte ptr [rcx+0x1F]
	mov	eax, 1
	shl	eax, cl
$_027:	ret

$_028:
	push	rsi
	push	rdi
	push	rbp
	mov	rbp, rsp
	sub	rsp, 32
	mov	rsi, rcx
	call	SymFind@PLT
	mov	rdi, rax
	test	rdi, rdi
	jz	$_029
	cmp	byte ptr [rdi+0x1D], 0
	jnz	$_032
$_029:	test	rdi, rdi
	jnz	$_030
	mov	rcx, rsi
	call	SymGCreate@PLT
	mov	rdi, rax
	jmp	$_031

$_030:	mov	rdx, rdi
	lea	rcx, [SymTables+rip]
	call	sym_remove_table@PLT
$_031:	mov	byte ptr [rdi+0x1D], 4
	mov	ecx, 24
	call	LclAlloc@PLT
	mov	qword ptr [rdi+0x78], rax
	mov	rdx, rdi
	lea	rcx, [SymTables+0x30+rip]
	call	sym_add_table@PLT
	or	byte ptr [rdi+0x12], 0x01
	mov	byte ptr [rdi+0x48], 254
	mov	rcx, qword ptr [rdi+0x78]
	inc	dword ptr [grpdefidx+rip]
	mov	eax, dword ptr [grpdefidx+rip]
	mov	dword ptr [rcx+0x8], eax
	mov	rcx, rdi
	call	$_009
	jmp	$_033

$_032:	cmp	byte ptr [rdi+0x1D], 4
	jz	$_033
	mov	rdx, rsi
	mov	ecx, 2005
	call	asmerr@PLT
	xor	eax, eax
	jmp	$_034

$_033:	or	byte ptr [rdi+0x10], 0x01
	mov	rax, rdi
$_034:	leave
	pop	rdi
	pop	rsi
	ret

$_035:
	mov	qword ptr [rsp+0x18], r8
	push	rdi
	push	rbp
	mov	rbp, rsp
	sub	rsp, 40
	mov	rdi, rcx
	test	rcx, rcx
	jnz	$_038
	cmp	dword ptr [rbp+0x28], 0
	jz	$_036
	mov	rcx, rdx
	call	SymCreate@PLT
	jmp	$_037

$_036:	mov	rcx, rdx
	call	SymAlloc@PLT
$_037:	mov	rdi, rax
	jmp	$_039

$_038:	cmp	byte ptr [rdi+0x1D], 0
	jnz	$_039
	mov	rdx, rdi
	lea	rcx, [SymTables+rip]
	call	sym_remove_table@PLT
$_039:	test	rdi, rdi
	jz	$_041
	mov	byte ptr [rdi+0x1D], 3
	mov	ecx, 104
	call	LclAlloc@PLT
	mov	qword ptr [rdi+0x78], rax
	mov	rcx, rax
	mov	al, byte ptr [r14+0x5]
	mov	byte ptr [rcx+0x1D], al
	mov	byte ptr [rcx+0x1F], 4
	mov	byte ptr [rcx+0x5C], 0
	mov	qword ptr [rdi+0x80], 0
	cmp	qword ptr [SymTables+0x20+rip], 0
	jnz	$_040
	mov	qword ptr [SymTables+0x20+rip], rdi
	mov	qword ptr [SymTables+0x28+rip], rdi
	jmp	$_041

$_040:	mov	rcx, qword ptr [SymTables+0x28+rip]
	mov	qword ptr [rcx+0x80], rdi
	mov	qword ptr [SymTables+0x28+rip], rdi
$_041:	mov	rax, rdi
	leave
	pop	rdi
	ret

GrpDir:
	mov	qword ptr [rsp+0x8], rcx
	push	rsi
	push	rdi
	push	rbx
	push	rbp
	mov	rbp, rsp
	sub	rsp, 40
	mov	rbx, rdx
	cmp	dword ptr [rbp+0x28], 1
	jz	$_042
	imul	ecx, dword ptr [rbp+0x28], 32
	mov	rdx, qword ptr [rbx+rcx+0x10]
	mov	ecx, 2008
	call	asmerr@PLT
	jmp	$_067

$_042:	cmp	dword ptr [Options+0x8C+rip], 2
	jz	$_043
	cmp	dword ptr [Options+0x8C+rip], 3
	jz	$_043
	cmp	dword ptr [Options+0x8C+rip], 0
	jnz	$_044
	cmp	byte ptr [r14+0xB], 2
	jnz	$_044
$_043:	mov	ecx, 2214
	call	asmerr@PLT
	jmp	$_067

$_044:	mov	rcx, qword ptr [rbx+0x10]
	call	$_028
	mov	rdi, rax
	test	rdi, rdi
	jnz	$_045
	mov	rax, -1
	jmp	$_067

$_045:	inc	dword ptr [rbp+0x28]
	add	rbx, 64
$_046:	cmp	byte ptr [rbx], 8
	jz	$_047
	mov	rdx, qword ptr [rbx+0x10]
	mov	ecx, 2008
	call	asmerr@PLT
	jmp	$_067

$_047:	mov	rax, qword ptr [rbx+0x10]
	mov	qword ptr [rbp-0x8], rax
	inc	dword ptr [rbp+0x28]
	add	rbx, 32
	mov	rcx, qword ptr [rbp-0x8]
	call	SymFind@PLT
	mov	rsi, rax
	cmp	dword ptr [Parse_Pass+rip], 0
	jne	$_057
	test	rsi, rsi
	jz	$_048
	mov	rcx, qword ptr [rsi+0x78]
	xor	eax, eax
	test	rcx, rcx
	jz	$_048
	mov	rax, qword ptr [rcx]
$_048:	test	rsi, rsi
	jz	$_049
	cmp	byte ptr [rsi+0x1D], 0
	jnz	$_052
$_049:	mov	r8d, 1
	mov	rdx, qword ptr [rbp-0x8]
	mov	rcx, rsi
	call	$_035
	mov	rsi, rax
	mov	rdx, qword ptr [rdi+0x78]
	mov	rcx, qword ptr [rsi+0x78]
	cmp	qword ptr [rdx], 0
	jz	$_050
	mov	al, byte ptr [rdi+0x48]
	mov	byte ptr [rcx+0x1D], al
	jmp	$_051

$_050:	mov	byte ptr [rcx+0x1D], 254
$_051:	jmp	$_054

$_052:	cmp	byte ptr [rsi+0x1D], 3
	jz	$_053
	mov	rdx, qword ptr [rbp-0x8]
	mov	ecx, 2097
	call	asmerr@PLT
	jmp	$_067

	jmp	$_054

$_053:	test	rax, rax
	jz	$_054
	cmp	rax, qword ptr [r14+0x40]
	jz	$_054
	cmp	rax, rdi
	jz	$_054
	mov	rdx, qword ptr [rbp-0x8]
	mov	ecx, 2072
	call	asmerr@PLT
	jmp	$_067

$_054:	cmp	byte ptr [rdi+0x48], 254
	jnz	$_055
	mov	al, byte ptr [rcx+0x1D]
	mov	byte ptr [rdi+0x48], al
	jmp	$_056

$_055:	mov	al, byte ptr [rcx+0x1D]
	cmp	byte ptr [rdi+0x48], al
	jz	$_056
	mov	r8, qword ptr [rsi+0x8]
	mov	rdx, qword ptr [rdi+0x8]
	mov	ecx, 2100
	call	asmerr@PLT
	jmp	$_067

$_056:	jmp	$_059

$_057:	test	rsi, rsi
	jz	$_058
	cmp	byte ptr [rsi+0x1D], 3
	jnz	$_058
	cmp	qword ptr [rsi+0x40], 0
	jnz	$_059
$_058:	mov	rdx, qword ptr [rbp-0x8]
	mov	ecx, 2006
	call	asmerr@PLT
	jmp	$_067

$_059:	mov	rcx, qword ptr [rsi+0x78]
	cmp	qword ptr [rcx], 0
	jnz	$_063
	mov	qword ptr [rcx], rdi
	mov	ecx, 16
	call	LclAlloc@PLT
	mov	qword ptr [rax+0x8], rsi
	mov	rdx, qword ptr [rdi+0x78]
	inc	dword ptr [rdx+0x10]
	cmp	qword ptr [rdx], 0
	jnz	$_060
	mov	qword ptr [rdx], rax
	jmp	$_063

$_060:	mov	rcx, qword ptr [rdx]
	jmp	$_062

$_061:	mov	rcx, qword ptr [rcx]
$_062:	cmp	qword ptr [rcx], 0
	jnz	$_061
	mov	qword ptr [rcx], rax
$_063:	mov	eax, dword ptr [r14+0x64]
	cmp	dword ptr [rbp+0x28], eax
	jge	$_066
	cmp	byte ptr [rbx], 44
	jnz	$_064
	cmp	byte ptr [rbx+0x20], 0
	jnz	$_065
$_064:	mov	rdx, qword ptr [rbx+0x18]
	mov	ecx, 2008
	call	asmerr@PLT
	jmp	$_067

$_065:	inc	dword ptr [rbp+0x28]
	add	rbx, 32
$_066:	mov	eax, dword ptr [r14+0x64]
	cmp	dword ptr [rbp+0x28], eax
	jl	$_046
	xor	eax, eax
$_067:	leave
	pop	rbx
	pop	rdi
	pop	rsi
	ret

UpdateWordSize:
	movzx	eax, byte ptr [r14+0x6]
	mov	dword ptr [rcx+0x30], eax
	ret

SetOfssize:
	sub	rsp, 40
	mov	rcx, qword ptr [r14+0x38]
	test	rcx, rcx
	jnz	$_068
	mov	al, byte ptr [r14+0x5]
	mov	byte ptr [r14+0x4], al
	jmp	$_071

$_068:	mov	rax, qword ptr [rcx+0x78]
	movzx	ecx, byte ptr [rax+0x1D]
	mov	byte ptr [r14+0x4], cl
	movzx	eax, byte ptr [r14+0x14]
	and	eax, 0x9F
	test	eax, 0x80
	jz	$_069
	mov	eax, 128
	jmp	$_070

$_069:	cmp	eax, 6
	jc	$_070
	mov	eax, 6
$_070:	mov	edx, eax
	lea	rax, [min_cpu+rip]
	movzx	eax, word ptr [rax+rcx*2]
	cmp	edx, eax
	jnc	$_071
	mov	eax, 16
	shl	eax, cl
	mov	edx, eax
	mov	ecx, 2066
	call	asmerr@PLT
	jmp	$_074

$_071:	mov	eax, 2
	mov	cl, byte ptr [r14+0x4]
	shl	eax, cl
	mov	byte ptr [r14+0x6], al
	xor	eax, eax
	mov	dword ptr [r14+0x5C], 9
	cmp	cl, 2
	jnz	$_072
	inc	eax
	mov	dword ptr [r14+0x5C], 163
	jmp	$_073

$_072:	cmp	cl, 1
	jnz	$_073
	mov	dword ptr [r14+0x5C], 17
$_073:	mov	ecx, eax
	call	Set64Bit@PLT
	xor	eax, eax
$_074:	add	rsp, 40
	ret

$_075:
	push	rsi
	push	rdi
	push	rbp
	mov	rbp, rsp
	sub	rsp, 32
	mov	rsi, rcx
	mov	rcx, qword ptr [r14+0x38]
	xor	edi, edi
	test	rcx, rcx
	jnz	$_076
	inc	edi
	jmp	$_077

$_076:	movsxd	r8, dword ptr [rcx+0x14]
	mov	rdx, rsi
	mov	rcx, qword ptr [rcx+0x8]
	call	qword ptr [SymCmpFunc+rip]
	test	eax, eax
	jz	$_077
	inc	edi
$_077:	test	edi, edi
	jz	$_078
	mov	rdx, rsi
	mov	ecx, 1010
	call	asmerr@PLT
	jmp	$_080

$_078:	cmp	dword ptr [write_to_file+rip], 0
	jz	$_079
	cmp	dword ptr [Options+0x8C+rip], 1
	jnz	$_079
	call	omf_FlushCurrSeg@PLT
	test	byte ptr [Options+0x4+rip], 0x20
	jnz	$_079
	xor	ecx, ecx
	call	omf_OutSelect@PLT
$_079:	call	$_023
	xor	eax, eax
$_080:	leave
	pop	rdi
	pop	rsi
	ret

DefineFlatGroup:
	sub	rsp, 40
	mov	rax, qword ptr [r14+0x40]
	test	rax, rax
	jnz	$_081
	lea	rcx, [DS0011+rip]
	call	$_028
	mov	qword ptr [r14+0x40], rax
	mov	cl, byte ptr [r14+0x5]
	mov	byte ptr [rax+0x48], cl
$_081:	or	byte ptr [rax+0x10], 0x01
	add	rsp, 40
	ret

GetSegIdx:
	mov	rax, rcx
	test	rax, rax
	jz	$_082
	mov	rax, qword ptr [rax+0x78]
	mov	eax, dword ptr [rax+0x44]
	jmp	$_082

$_082:
	ret

GetGroup:
	mov	rax, qword ptr [rcx+0x40]
	test	rax, rax
	jz	$_083
	mov	rax, qword ptr [rax+0x78]
	mov	rax, qword ptr [rax]
	jmp	$_083

$_083:
	ret

GetSymOfssize:
	mov	rax, qword ptr [rcx+0x40]
	test	rax, rax
	jnz	$_089
	mov	rax, rcx
	cmp	byte ptr [rax+0x1D], 2
	jnz	$_084
	movzx	eax, byte ptr [rax+0x20]
	jmp	$_091

$_084:	cmp	byte ptr [rax+0x1D], 5
	jz	$_085
	cmp	byte ptr [rax+0x1D], 4
	jnz	$_086
$_085:	movzx	eax, byte ptr [rax+0x48]
	jmp	$_091

$_086:	cmp	byte ptr [rax+0x1D], 3
	jnz	$_087
	mov	rax, qword ptr [rax+0x78]
	movzx	eax, byte ptr [rax+0x1D]
	jmp	$_091

$_087:	cmp	byte ptr [rax+0x1E], 192
	jnz	$_088
	xor	eax, eax
	jmp	$_091

$_088:	jmp	$_090

$_089:	mov	rax, qword ptr [rax+0x78]
	movzx	eax, byte ptr [rax+0x1D]
	jmp	$_091

$_090:	movzx	eax, byte ptr [r14+0x4]
$_091:	ret

SetSymSegOfs:
	mov	rax, qword ptr [r14+0x38]
	mov	qword ptr [rcx+0x40], rax
	call	GetCurrOffset
	mov	dword ptr [rcx+0x30], eax
	ret

TypeFromClassName:
	push	rsi
	push	rdi
	push	rbp
	mov	rbp, rsp
	sub	rsp, 288
	mov	rax, qword ptr [rcx+0x78]
	cmp	byte ptr [rax+0x1F], 255
	jnz	$_092
	mov	eax, 5
	jmp	$_106

$_092:	cmp	byte ptr [rax+0x5C], 5
	jnz	$_093
	mov	eax, 4
	jmp	$_106

$_093:	test	rdx, rdx
	jnz	$_094
	xor	eax, eax
	jmp	$_106

$_094:	mov	rdi, rdx
	call	GetCodeClass@PLT
	mov	rdx, rax
	mov	rcx, qword ptr [rdi+0x8]
	call	tstricmp@PLT
	test	eax, eax
	jnz	$_095
	mov	eax, 1
	jmp	$_106

$_095:	mov	esi, dword ptr [rdi+0x14]
	lea	ecx, [rsi+0x1]
	mov	r8d, ecx
	mov	rdx, qword ptr [rdi+0x8]
	lea	rcx, [rbp-0xF8]
	call	tmemcpy@PLT
	mov	rcx, rax
	call	tstrupr@PLT
	mov	rdi, rax
	jmp	$_104

$_096:	mov	r8d, 6
	lea	rdx, [DS001B+rip]
	mov	rcx, rdi
	call	tmemcmp@PLT
	test	eax, eax
	jnz	$_097
	mov	eax, 2
	jmp	$_106

$_097:	mov	r8d, 6
	lea	rdx, [DS001C+rip]
	mov	rcx, rdi
	call	tmemcmp@PLT
	test	eax, eax
	jnz	$_098
	mov	eax, 2
	jmp	$_106

$_098:	mov	r8d, 6
	lea	rdx, [DS001D+rip]
	mov	rcx, rdi
	call	tmemcmp@PLT
	test	eax, eax
	jnz	$_099
	mov	eax, 2
	jmp	$_106

$_099:	mov	r8d, 4
	lea	rdx, [DS001E+rip]
	lea	rcx, [rdi+rsi-0x4]
	call	tmemcmp@PLT
	test	eax, eax
	jnz	$_100
	mov	eax, 1
	jmp	$_106

$_100:	mov	r8d, 4
	lea	rdx, [DS001F+rip]
	lea	rcx, [rdi+rsi-0x4]
	call	tmemcmp@PLT
	test	eax, eax
	jnz	$_101
	mov	eax, 2
	jmp	$_106

$_101:	mov	r8d, 3
	lea	rdx, [DS0020+rip]
	lea	rcx, [rdi+rsi-0x3]
	call	tmemcmp@PLT
	test	eax, eax
	jnz	$_102
	mov	eax, 3
	jmp	$_106

$_102:	jmp	$_105

$_103:	jmp	$_096

$_104:	cmp	esi, 5
	je	$_096
	cmp	esi, 4
	jz	$_099
	cmp	esi, 3
	jz	$_101
	jmp	$_103

$_105:	xor	eax, eax
$_106:	leave
	pop	rdi
	pop	rsi
	ret

$_107:
	push	rsi
	push	rdi
	push	rbx
	push	rbp
	mov	rbp, rsp
	sub	rsp, 40
	mov	rbx, rcx
	mov	esi, edx
	mov	rdi, qword ptr [r14+0x248]
$_108:	test	rdi, rdi
	jz	$_110
	mov	rcx, qword ptr [rdi+0x8]
	cmp	byte ptr [rcx+0x1D], 11
	jnz	$_109
	mov	r8d, esi
	mov	rdx, rbx
	mov	rcx, qword ptr [rcx+0x8]
	call	qword ptr [SymCmpFunc+rip]
	test	eax, eax
	jnz	$_109
	mov	rax, qword ptr [rdi+0x8]
	jmp	$_111

$_109:	mov	rdi, qword ptr [rdi]
	jmp	$_108

$_110:	xor	eax, eax
$_111:	leave
	pop	rbx
	pop	rdi
	pop	rsi
	ret

$_112:
	push	rsi
	push	rdi
	push	rbx
	push	rbp
	mov	rbp, rsp
	sub	rsp, 40
	mov	rbx, rcx
	call	tstrlen@PLT
	mov	esi, eax
	cmp	esi, 255
	jbe	$_113
	mov	ecx, 2041
	call	asmerr@PLT
	xor	eax, eax
	jmp	$_114

$_113:	mov	edx, esi
	mov	rcx, rbx
	call	$_107
	test	rax, rax
	jnz	$_114
	mov	rcx, rbx
	call	SymAlloc@PLT
	mov	rsi, rax
	mov	byte ptr [rsi+0x1D], 11
	mov	rcx, rsi
	call	$_009
	mov	rax, rsi
$_114:	leave
	pop	rbx
	pop	rdi
	pop	rsi
	ret

$_115:
	push	rsi
	push	rbp
	mov	rbp, rsp
	sub	rsp, 40
	mov	rsi, rcx
	mov	rcx, rdx
	call	$_112
	test	rax, rax
	jnz	$_116
	mov	rax, -1
	jmp	$_117

$_116:	mov	rcx, qword ptr [rsi+0x78]
	mov	qword ptr [rcx+0x50], rax
	xor	eax, eax
$_117:	leave
	pop	rsi
	ret

CreateIntSegment:
	mov	qword ptr [rsp+0x8], rcx
	mov	qword ptr [rsp+0x10], rdx
	mov	qword ptr [rsp+0x18], r8
	mov	qword ptr [rsp+0x20], r9
	push	rdi
	push	rbp
	mov	rbp, rsp
	sub	rsp, 40
	cmp	dword ptr [rbp+0x38], 0
	jz	$_121
	mov	rcx, qword ptr [rbp+0x18]
	call	SymFind@PLT
	test	rax, rax
	jz	$_118
	cmp	byte ptr [rax+0x1D], 0
	jnz	$_119
$_118:	mov	r8d, dword ptr [rbp+0x38]
	mov	rdx, qword ptr [rbp+0x18]
	mov	rcx, rax
	call	$_035
	jmp	$_120

$_119:	cmp	byte ptr [rax+0x1D], 3
	jz	$_120
	mov	rdx, qword ptr [rbp+0x18]
	mov	ecx, 2005
	call	asmerr@PLT
	xor	eax, eax
	jmp	$_124

$_120:	jmp	$_122

$_121:	xor	r8d, r8d
	mov	rdx, qword ptr [rbp+0x18]
	xor	ecx, ecx
	call	$_035
$_122:	test	rax, rax
	jz	$_124
	mov	rdi, rax
	test	byte ptr [rdi+0x10], 0x01
	jnz	$_123
	inc	dword ptr [r14+0x364]
	mov	rcx, qword ptr [rdi+0x78]
	mov	eax, dword ptr [r14+0x364]
	mov	dword ptr [rcx+0x44], eax
	mov	rcx, rdi
	call	$_009
	or	byte ptr [rdi+0x10], 0x01
$_123:	mov	rcx, qword ptr [rdi+0x78]
	or	byte ptr [rcx+0x1C], 0x10
	mov	qword ptr [rdi+0x40], rdi
	mov	al, byte ptr [rbp+0x28]
	mov	byte ptr [rcx+0x1F], al
	mov	al, byte ptr [rbp+0x30]
	mov	byte ptr [rcx+0x1D], al
	mov	rdx, qword ptr [rbp+0x20]
	mov	rcx, rdi
	call	$_115
	mov	rax, rdi
$_124:	leave
	pop	rdi
	ret

EndsDir:
	mov	qword ptr [rsp+0x8], rcx
	push	rbx
	push	rbp
	mov	rbp, rsp
	sub	rsp, 40
	mov	rbx, rdx
	cmp	qword ptr [CurrStruct+rip], 0
	jz	$_125
	mov	rdx, rbx
	mov	ecx, dword ptr [rbp+0x18]
	call	EndstructDirective@PLT
	jmp	$_130

$_125:	cmp	dword ptr [rbp+0x18], 1
	jz	$_126
	imul	ecx, dword ptr [rbp+0x18], 32
	mov	rdx, qword ptr [rbx+rcx+0x10]
	mov	ecx, 2008
	call	asmerr@PLT
	jmp	$_130

$_126:	cmp	dword ptr [Parse_Pass+rip], 0
	jz	$_127
	test	byte ptr [r14], 0x08
	jz	$_127
	xor	r8d, r8d
	xor	edx, edx
	mov	ecx, 7
	call	LstWrite@PLT
$_127:	mov	rcx, qword ptr [rbx+0x10]
	call	$_075
	cmp	eax, -1
	jnz	$_128
	mov	rax, -1
	jmp	$_130

$_128:	inc	dword ptr [rbp+0x18]
	imul	ecx, dword ptr [rbp+0x18], 32
	cmp	byte ptr [rbx+rcx], 0
	jz	$_129
	mov	rdx, qword ptr [rbx+rcx+0x10]
	mov	ecx, 2008
	call	asmerr@PLT
$_129:	call	SetOfssize
$_130:	leave
	pop	rbx
	ret

$_131:
	push	rdi
	push	rbx
	push	rbp
	mov	rbp, rsp
	sub	rsp, 32
	mov	rbx, rdx
	mov	rcx, qword ptr [rbx+0x10]
	call	SymFind@PLT
	mov	rdi, rax
	test	rdi, rdi
	jz	$_132
	cmp	byte ptr [rdi+0x1D], 3
	jz	$_133
$_132:	mov	rdx, qword ptr [rbx+0x10]
	mov	ecx, 2006
	call	asmerr@PLT
	jmp	$_136

$_133:	or	byte ptr [rdi+0x10], 0x01
	cmp	qword ptr [r14+0x38], 0
	jz	$_134
	cmp	dword ptr [Options+0x8C+rip], 1
	jnz	$_134
	call	omf_FlushCurrSeg@PLT
	test	byte ptr [Options+0x4+rip], 0x20
	jnz	$_134
	xor	ecx, ecx
	call	omf_OutSelect@PLT
$_134:	mov	rcx, rdi
	call	$_020
	call	SetOfssize
	mov	ebx, eax
	test	byte ptr [r14], 0x08
	jz	$_135
	xor	r8d, r8d
	xor	edx, edx
	mov	ecx, 7
	call	LstWrite@PLT
$_135:	mov	eax, ebx
$_136:	leave
	pop	rbx
	pop	rdi
	ret

$_137:
	push	rdi
	push	rbp
	mov	rbp, rsp
	mov	rdx, qword ptr [SymTables+0x20+rip]
	mov	rdi, 0
$_138:	test	rdx, rdx
	jz	$_142
	cmp	rdx, rcx
	jnz	$_141
	test	rdi, rdi
	jnz	$_139
	mov	rax, qword ptr [rdx+0x80]
	mov	qword ptr [SymTables+0x20+rip], rax
	jmp	$_140

$_139:	mov	rax, qword ptr [rdx+0x80]
	mov	qword ptr [rdi+0x80], rax
$_140:	cmp	qword ptr [rdx+0x80], 0
	jnz	$_141
	mov	qword ptr [SymTables+0x28+rip], rdi
$_141:	mov	rdi, rdx
	mov	rdx, qword ptr [rdx+0x80]
	jmp	$_138

$_142:
	leave
	pop	rdi
	ret

SegmentDir:
	mov	qword ptr [rsp+0x8], rcx
	mov	qword ptr [rsp+0x10], rdx
	push	rsi
	push	rdi
	push	rbx
	push	rbp
	mov	rbp, rsp
	sub	rsp, 264
	mov	byte ptr [rbp-0x1], 0
	mov	dword ptr [rbp-0x24], 0
	mov	dword ptr [rbp-0x30], 0
	mov	byte ptr [rbp-0x34], 0
	mov	rbx, rdx
	cmp	dword ptr [Parse_Pass+rip], 0
	jz	$_143
	mov	rdx, rbx
	mov	ecx, dword ptr [rbp+0x28]
	call	$_131
	jmp	$_231

$_143:	cmp	dword ptr [rbp+0x28], 1
	jz	$_144
	imul	ecx, dword ptr [rbp+0x28], 32
	mov	rdx, qword ptr [rbx+rcx+0x10]
	mov	ecx, 2008
	call	asmerr@PLT
	jmp	$_231

$_144:	mov	rax, qword ptr [rbx+0x10]
	mov	qword ptr [rbp-0x48], rax
	mov	rcx, qword ptr [rbp-0x48]
	call	SymFind@PLT
	mov	qword ptr [rbp-0x50], rax
	test	rax, rax
	jz	$_145
	cmp	byte ptr [rax+0x1D], 0
	jnz	$_146
$_145:	mov	dword ptr [rbp-0x24], 1
	mov	r8d, 1
	mov	rdx, qword ptr [rbp-0x48]
	mov	rcx, qword ptr [rbp-0x50]
	call	$_035
	mov	qword ptr [rbp-0x50], rax
	or	byte ptr [rax+0x12], 0x01
	mov	qword ptr [rbp-0x40], rax
	mov	byte ptr [rbp-0x31], 254
	jmp	$_153

$_146:	cmp	byte ptr [rax+0x1D], 3
	jne	$_152
	mov	qword ptr [rbp-0x40], rax
	mov	rdi, rax
	test	byte ptr [rax+0x10], 0x01
	jnz	$_150
	mov	rcx, rdi
	call	$_137
	mov	qword ptr [rdi+0x80], 0
	cmp	qword ptr [SymTables+0x20+rip], 0
	jnz	$_147
	mov	qword ptr [SymTables+0x20+rip], rdi
	mov	qword ptr [SymTables+0x28+rip], rdi
	jmp	$_148

$_147:	mov	rcx, qword ptr [SymTables+0x28+rip]
	mov	qword ptr [rcx+0x80], rdi
	mov	qword ptr [SymTables+0x28+rip], rdi
$_148:	mov	rcx, qword ptr [rdi+0x78]
	mov	al, byte ptr [rcx+0x1D]
	mov	byte ptr [rbp-0x31], al
	cmp	al, 254
	jnz	$_149
	mov	al, byte ptr [r14+0x4]
	mov	byte ptr [rcx+0x1D], al
$_149:	jmp	$_151

$_150:	mov	byte ptr [rbp-0x1], 1
	mov	rcx, qword ptr [rdi+0x78]
	mov	al, byte ptr [rcx+0x1D]
	mov	byte ptr [rbp-0x31], al
	mov	al, byte ptr [rcx+0x1F]
	mov	byte ptr [rbp-0x32], al
	mov	al, byte ptr [rcx+0x5C]
	mov	byte ptr [rbp-0x33], al
$_151:	jmp	$_153

$_152:	mov	rdx, qword ptr [rbp-0x48]
	mov	ecx, 2005
	call	asmerr@PLT
	jmp	$_231

$_153:	inc	dword ptr [rbp+0x28]
$_154:	mov	eax, dword ptr [r14+0x64]
	cmp	dword ptr [rbp+0x28], eax
	jge	$_212
	imul	ebx, dword ptr [rbp+0x28], 32
	add	rbx, qword ptr [rbp+0x30]
	mov	rsi, qword ptr [rbx+0x10]
	cmp	byte ptr [rbx], 9
	jnz	$_156
	cmp	byte ptr [rbx+0x1], 34
	jz	$_155
	cmp	byte ptr [rbx+0x1], 39
	jz	$_155
	mov	rdx, rsi
	mov	ecx, 2008
	call	asmerr@PLT
	jmp	$_211

$_155:	inc	rsi
	mov	ecx, dword ptr [rbx+0x4]
	mov	byte ptr [rsi+rcx], 0
	mov	rdx, rsi
	mov	rcx, qword ptr [rbp-0x40]
	call	$_115
	jmp	$_211

$_156:	mov	r8d, 27
	lea	rdx, [SegAttrToken+rip]
	mov	rcx, rsi
	call	FindToken
	mov	dword ptr [rbp-0x14], eax
	cmp	dword ptr [rbp-0x14], 0
	jge	$_157
	lea	r8, [DS0021+rip]
	mov	rdx, rsi
	mov	ecx, 2015
	call	asmerr@PLT
	jmp	$_211

$_157:	lea	rcx, [SegAttrValue+rip]
	lea	rax, [rcx+rax*2]
	mov	qword ptr [rbp-0x20], rax
	movzx	edx, byte ptr [rax+0x1]
	mov	ecx, dword ptr [rbp-0x30]
	mov	eax, edx
	and	eax, 0x1F
	and	eax, ecx
	test	eax, eax
	jz	$_158
	lea	r8, [DS0021+rip]
	mov	rdx, rsi
	mov	ecx, 2015
	call	asmerr@PLT
	jmp	$_211

$_158:	or	dword ptr [rbp-0x30], edx
	mov	rcx, qword ptr [rbp-0x40]
	mov	rdi, qword ptr [rcx+0x78]
	mov	rcx, qword ptr [rbp-0x20]
	jmp	$_210

$_159:	or	byte ptr [rdi+0x1C], 0x01
	jmp	$_211

$_160:	mov	al, byte ptr [rcx]
	mov	byte ptr [rdi+0x1F], al
	jmp	$_211

$_161:	cmp	dword ptr [Options+0x8C+rip], 1
	jnz	$_162
	mov	rdx, qword ptr [rbx+0x10]
	mov	ecx, 2248
	call	asmerr@PLT
	mov	eax, dword ptr [r14+0x64]
	mov	dword ptr [rbp+0x28], eax
	jmp	$_211

$_162:	inc	dword ptr [rbp+0x28]
	add	rbx, 32
	cmp	byte ptr [rbx], 40
	jz	$_163
	lea	rdx, [DS0022+rip]
	mov	ecx, 2065
	call	asmerr@PLT
	jmp	$_211

$_163:	inc	dword ptr [rbp+0x28]
	mov	byte ptr [rsp+0x20], 0
	lea	r9, [rbp-0xB8]
	mov	r8d, dword ptr [r14+0x64]
	mov	rdx, qword ptr [rbp+0x30]
	lea	rcx, [rbp+0x28]
	call	EvalOperand@PLT
	cmp	eax, -1
	je	$_211
	imul	ebx, dword ptr [rbp+0x28], 32
	add	rbx, qword ptr [rbp+0x30]
	cmp	dword ptr [Options+0x8C+rip], 0
	jnz	$_165
	cmp	byte ptr [r14+0xB], 0
	jnz	$_165
	cmp	byte ptr [rbx], 44
	jnz	$_165
	inc	dword ptr [rbp+0x28]
	add	rbx, 32
	mov	rcx, qword ptr [rbx+0x10]
	movzx	eax, word ptr [rcx]
	or	al, 0x20
	cmp	byte ptr [rbx], 8
	jnz	$_164
	cmp	ax, 118
	jnz	$_164
	inc	dword ptr [rbp+0x28]
	add	rbx, 32
	or	byte ptr [rdi+0x1C], 0x80
	jmp	$_165

$_164:	mov	rdx, rcx
	mov	ecx, 2008
	call	asmerr@PLT
	jmp	$_211

$_165:	cmp	byte ptr [rbx], 41
	jz	$_166
	lea	rdx, [DS0023+rip]
	mov	ecx, 2065
	call	asmerr@PLT
	jmp	$_211

$_166:	cmp	dword ptr [rbp-0x7C], 0
	jz	$_167
	mov	ecx, 2026
	call	asmerr@PLT
	jmp	$_211

$_167:	mov	ecx, 1
	xor	edx, edx
$_168:	cmp	ecx, dword ptr [rbp-0xB8]
	jge	$_169
	cmp	ecx, 8192
	jnc	$_169
	shl	ecx, 1
	inc	edx
	jmp	$_168

$_169:	cmp	ecx, dword ptr [rbp-0xB8]
	jz	$_170
	mov	dword ptr [rbp-0x28], edx
	mov	edx, dword ptr [rbp-0xB8]
	mov	ecx, 2063
	call	asmerr@PLT
	mov	edx, dword ptr [rbp-0x28]
$_170:	mov	byte ptr [rdi+0x1F], dl
	jmp	$_211

$_171:	mov	al, byte ptr [rcx]
	mov	byte ptr [rdi+0x5C], al
	jmp	$_211

$_172:	mov	al, byte ptr [rcx]
	mov	byte ptr [rdi+0x5C], al
	mov	byte ptr [rdi+0x1F], 255
	inc	dword ptr [rbp+0x28]
	mov	byte ptr [rsp+0x20], 0
	lea	r9, [rbp-0xB8]
	mov	r8d, dword ptr [r14+0x64]
	mov	rdx, qword ptr [rbp+0x30]
	lea	rcx, [rbp+0x28]
	call	EvalOperand@PLT
	cmp	eax, -1
	jz	$_174
	cmp	dword ptr [rbp-0x7C], 0
	jnz	$_173
	mov	eax, dword ptr [rbp-0xB8]
	mov	dword ptr [rdi+0x58], eax
	mov	dword ptr [rdi+0x60], 0
	jmp	$_174

$_173:	mov	ecx, 2026
	call	asmerr@PLT
$_174:	jmp	$_211

$_175:	cmp	dword ptr [Options+0x8C+rip], 2
	jz	$_176
	cmp	dword ptr [Options+0x8C+rip], 1
	jz	$_176
	mov	rdx, qword ptr [rbx+0x10]
	mov	ecx, 2248
	call	asmerr@PLT
	mov	eax, dword ptr [r14+0x64]
	mov	dword ptr [rbp+0x28], eax
	jmp	$_211

$_176:	inc	dword ptr [rbp+0x28]
	add	rbx, 32
	cmp	byte ptr [rbx], 40
	jz	$_177
	lea	rdx, [DS0022+rip]
	mov	ecx, 2065
	call	asmerr@PLT
	jmp	$_211

$_177:	inc	dword ptr [rbp+0x28]
	mov	byte ptr [rsp+0x20], 0
	lea	r9, [rbp-0xB8]
	mov	r8d, dword ptr [r14+0x64]
	mov	rdx, qword ptr [rbp+0x30]
	lea	rcx, [rbp+0x28]
	call	EvalOperand@PLT
	cmp	eax, -1
	je	$_211
	imul	ebx, dword ptr [rbp+0x28], 32
	add	rbx, qword ptr [rbp+0x30]
	cmp	dword ptr [rbp-0x7C], 0
	jz	$_178
	mov	ecx, 2026
	call	asmerr@PLT
	mov	eax, dword ptr [r14+0x64]
	mov	dword ptr [rbp+0x28], eax
	jmp	$_211

$_178:	cmp	dword ptr [rbp-0xB8], 1
	jl	$_179
	cmp	dword ptr [rbp-0xB8], 6
	jle	$_180
$_179:	mov	ecx, 2156
	call	asmerr@PLT
	jmp	$_187

$_180:	cmp	dword ptr [rbp-0xB8], 5
	jne	$_187
	cmp	byte ptr [rbx], 44
	jz	$_181
	mov	rdx, qword ptr [rbx+0x18]
	mov	ecx, 2008
	call	asmerr@PLT
	mov	eax, dword ptr [r14+0x64]
	mov	dword ptr [rbp+0x28], eax
	jmp	$_211

$_181:	inc	dword ptr [rbp+0x28]
	add	rbx, 32
	cmp	byte ptr [rbx], 8
	jz	$_182
	mov	rdx, qword ptr [rbx+0x10]
	mov	ecx, 2008
	call	asmerr@PLT
	mov	eax, dword ptr [r14+0x64]
	mov	dword ptr [rbp+0x28], eax
	jmp	$_211

$_182:	mov	rcx, rbx
	call	SymFindID@PLT
	test	rax, rax
	jz	$_183
	mov	rcx, qword ptr [rax+0x78]
$_183:	test	rax, rax
	jz	$_184
	cmp	byte ptr [rax+0x1D], 3
	jnz	$_184
	cmp	byte ptr [rcx+0x5D], 0
	jz	$_184
	cmp	byte ptr [rcx+0x5D], 5
	jnz	$_185
$_184:	mov	rdx, qword ptr [rbx+0x10]
	mov	ecx, 2008
	call	asmerr@PLT
	jmp	$_186

$_185:	mov	eax, dword ptr [rcx+0x44]
	mov	dword ptr [rdi+0x58], eax
$_186:	inc	dword ptr [rbp+0x28]
	add	rbx, 32
$_187:	cmp	byte ptr [rbx], 41
	jz	$_188
	lea	rdx, [DS0023+rip]
	mov	ecx, 2065
	call	asmerr@PLT
	jmp	$_211

$_188:	mov	eax, dword ptr [rbp-0xB8]
	mov	byte ptr [rdi+0x5D], al
	mov	rcx, qword ptr [rbp-0x20]
	mov	al, byte ptr [rcx]
	mov	byte ptr [rdi+0x5C], al
	jmp	$_211

$_189:	cmp	byte ptr [r14+0x5], 0
	jnz	$_190
	mov	ecx, 2085
	call	asmerr@PLT
	jmp	$_211

$_190:	call	DefineFlatGroup
	mov	al, byte ptr [r14+0x5]
	mov	byte ptr [rdi+0x1D], al
	mov	rax, qword ptr [r14+0x40]
	mov	qword ptr [rdi], rax
	jmp	$_211

$_191:	mov	rcx, qword ptr [rbp-0x20]
	mov	al, byte ptr [rcx]
	mov	byte ptr [rdi+0x1D], al
	cmp	byte ptr [rcx], 2
	jnz	$_192
	cmp	byte ptr [r14+0x15], 7
	jnz	$_192
	mov	rax, qword ptr [r14+0x40]
	mov	qword ptr [rdi], rax
$_192:	jmp	$_211

$_193:	or	byte ptr [rdi+0x1C], 0x02
	jmp	$_211

$_194:	cmp	dword ptr [Options+0x8C+rip], 1
	jz	$_195
	cmp	dword ptr [Options+0x8C+rip], 0
	jnz	$_196
	cmp	byte ptr [r14+0xB], 2
	jz	$_196
	cmp	byte ptr [r14+0xB], 3
	jz	$_196
$_195:	mov	rdx, qword ptr [rbx+0x10]
	mov	ecx, 2248
	call	asmerr@PLT
	jmp	$_197

$_196:	mov	al, byte ptr [rcx]
	or	byte ptr [rbp-0x34], al
$_197:	jmp	$_211

$_198:	cmp	dword ptr [Options+0x8C+rip], 1
	jz	$_199
	cmp	dword ptr [Options+0x8C+rip], 0
	jnz	$_200
	cmp	byte ptr [r14+0xB], 2
	jz	$_200
	cmp	byte ptr [r14+0xB], 3
	jz	$_200
$_199:	mov	rdx, qword ptr [rbx+0x10]
	mov	ecx, 2248
	call	asmerr@PLT
	mov	eax, dword ptr [r14+0x64]
	mov	dword ptr [rbp+0x28], eax
	jmp	$_211

$_200:	inc	dword ptr [rbp+0x28]
	add	rbx, 32
	cmp	byte ptr [rbx], 40
	jz	$_201
	lea	rdx, [DS0022+rip]
	mov	ecx, 2065
	call	asmerr@PLT
	jmp	$_211

$_201:	inc	dword ptr [rbp+0x28]
	add	rbx, 32
	cmp	byte ptr [rbx], 9
	jnz	$_202
	cmp	byte ptr [rbx+0x1], 34
	jz	$_203
	cmp	byte ptr [rbx+0x1], 39
	jz	$_203
$_202:	mov	rdx, qword ptr [rbp-0x10]
	mov	ecx, 2008
	call	asmerr@PLT
	mov	eax, dword ptr [r14+0x64]
	mov	dword ptr [rbp+0x28], eax
	jmp	$_211

$_203:	mov	rsi, rbx
	inc	dword ptr [rbp+0x28]
	add	rbx, 32
	cmp	byte ptr [rbx], 41
	jz	$_204
	lea	rdx, [DS0023+rip]
	mov	ecx, 2065
	call	asmerr@PLT
	jmp	$_211

$_204:	mov	rbx, rsi
	cmp	byte ptr [rbp-0x1], 0
	jz	$_208
	cmp	qword ptr [rdi+0x60], 0
	jz	$_205
	mov	rcx, qword ptr [rdi+0x60]
	call	tstrlen@PLT
	mov	esi, eax
	mov	rcx, qword ptr [rbx+0x10]
	inc	rcx
	mov	r8d, dword ptr [rbx+0x4]
	mov	rdx, rcx
	mov	rcx, qword ptr [rdi+0x60]
	call	tmemcmp@PLT
$_205:	cmp	qword ptr [rdi+0x60], 0
	jz	$_206
	cmp	dword ptr [rbx+0x4], esi
	jnz	$_206
	test	eax, eax
	jz	$_207
$_206:	mov	rcx, qword ptr [rbp-0x40]
	lea	r8, [DS0024+rip]
	mov	rdx, qword ptr [rcx+0x8]
	mov	ecx, 2015
	call	asmerr@PLT
	jmp	$_211

$_207:	jmp	$_209

$_208:	mov	ecx, dword ptr [rbx+0x4]
	inc	ecx
	call	LclAlloc@PLT
	mov	qword ptr [rdi+0x60], rax
	mov	rcx, qword ptr [rbx+0x10]
	inc	rcx
	mov	esi, dword ptr [rbx+0x4]
	mov	r8d, esi
	mov	rdx, rcx
	mov	rcx, qword ptr [rdi+0x60]
	call	tmemcpy@PLT
	mov	byte ptr [rax+rsi], 0
$_209:	jmp	$_211

$_210:	cmp	edx, 1
	je	$_159
	cmp	edx, 2
	je	$_160
	cmp	edx, 130
	je	$_161
	cmp	edx, 4
	je	$_171
	cmp	edx, 132
	je	$_172
	cmp	edx, 196
	je	$_175
	cmp	edx, 136
	je	$_189
	cmp	edx, 8
	je	$_191
	cmp	edx, 160
	je	$_193
	cmp	edx, 32
	je	$_194
	cmp	edx, 16
	je	$_198
$_211:	inc	dword ptr [rbp+0x28]
	jmp	$_154

$_212:	mov	rcx, qword ptr [rbp-0x40]
	mov	rdi, qword ptr [rcx+0x78]
	cmp	dword ptr [rdi+0x48], 1
	jz	$_213
	mov	rdx, qword ptr [rdi+0x50]
	mov	rcx, qword ptr [rbp-0x40]
	call	TypeFromClassName
	test	eax, eax
	jz	$_213
	mov	dword ptr [rdi+0x48], eax
$_213:	cmp	byte ptr [rbp-0x1], 0
	jz	$_219
	xor	esi, esi
	mov	al, byte ptr [rdi+0x1F]
	cmp	byte ptr [rbp-0x32], al
	jz	$_214
	lea	rsi, [DS0025+rip]
	jmp	$_217

$_214:	mov	al, byte ptr [rdi+0x5C]
	cmp	byte ptr [rbp-0x33], al
	jz	$_215
	lea	rsi, [DS0026+rip]
	jmp	$_217

$_215:	mov	al, byte ptr [rdi+0x1D]
	cmp	byte ptr [rbp-0x31], al
	jz	$_216
	lea	rsi, [DS0027+rip]
	jmp	$_217

$_216:	cmp	byte ptr [rbp-0x34], 0
	jz	$_217
	mov	al, byte ptr [rdi+0x1E]
	cmp	byte ptr [rbp-0x34], al
	jz	$_217
	lea	rsi, [DS0028+rip]
$_217:	test	rsi, rsi
	jz	$_218
	mov	rcx, qword ptr [rbp-0x40]
	mov	r8, rsi
	mov	rdx, qword ptr [rcx+0x8]
	mov	ecx, 2015
	call	asmerr@PLT
$_218:	jmp	$_225

$_219:	mov	rcx, qword ptr [rbp-0x50]
	or	byte ptr [rcx+0x10], 0x01
	mov	qword ptr [rcx+0x40], rcx
	mov	dword ptr [rcx+0x30], 0
	mov	al, byte ptr [rbp-0x31]
	cmp	al, 254
	jz	$_220
	cmp	al, byte ptr [rdi+0x1D]
	jz	$_220
	lea	r8, [DS0027+rip]
	mov	rdx, qword ptr [rcx+0x8]
	mov	ecx, 2015
	call	asmerr@PLT
	jmp	$_223

$_220:	mov	rdx, qword ptr [rdi]
	test	rdx, rdx
	jz	$_223
	cmp	byte ptr [rdx+0x48], 254
	jnz	$_221
	mov	al, byte ptr [rdi+0x1D]
	mov	byte ptr [rdx+0x48], al
	jmp	$_223

$_221:	mov	al, byte ptr [rdi+0x1D]
	cmp	byte ptr [rdx+0x48], al
	jz	$_223
	cmp	rdx, qword ptr [r14+0x40]
	jnz	$_222
	cmp	byte ptr [rdi+0x1D], 1
	jc	$_222
	jmp	$_223

$_222:	lea	r8, [DS0027+rip]
	mov	rdx, qword ptr [rcx+0x8]
	mov	ecx, 2015
	call	asmerr@PLT
$_223:	cmp	byte ptr [rdi+0x5D], 0
	jz	$_224
	cmp	dword ptr [Options+0x8C+rip], 1
	jnz	$_224
	jmp	$_225

$_224:	inc	dword ptr [r14+0x364]
	mov	eax, dword ptr [r14+0x364]
	mov	dword ptr [rdi+0x44], eax
	mov	rcx, qword ptr [rbp-0x50]
	call	$_009
$_225:	cmp	byte ptr [rbp-0x34], 0
	jz	$_226
	mov	al, byte ptr [rbp-0x34]
	mov	byte ptr [rdi+0x1E], al
$_226:	mov	rcx, qword ptr [rbp-0x40]
	call	$_020
	call	SetOfssize
	mov	esi, eax
	cmp	dword ptr [rbp-0x24], 0
	je	$_229
	cmp	dword ptr [rdi+0x48], 1
	jne	$_229
	cmp	byte ptr [Options+0xAA+rip], 4
	jnz	$_227
	cmp	qword ptr [CV8Label+rip], 0
	jnz	$_227
	mov	dword ptr [rsp+0x20], 0
	xor	r9d, r9d
	xor	r8d, r8d
	lea	rdx, [DS0029+rip]
	xor	ecx, ecx
	call	CreateLabel@PLT
	mov	qword ptr [CV8Label+rip], rax
$_227:	cmp	byte ptr [ImageBase+rip], 0
	jnz	$_229
	cmp	dword ptr [Options+0x8C+rip], 0
	jnz	$_229
	cmp	dword ptr [Options+0x90+rip], 0
	jz	$_229
	lea	rcx, [DS002A+rip]
	call	SymFind@PLT
	test	rax, rax
	jnz	$_228
	lea	rcx, [DS002A+rip]
	call	SymGCreate@PLT
$_228:	mov	qword ptr [rbp-0xC8], rax
	mov	dword ptr [rsp+0x20], 0
	lea	r9, [rbp-0xD0]
	mov	r8d, 196
	lea	rdx, [DS002B+rip]
	xor	ecx, ecx
	call	CreateLabel@PLT
	mov	dword ptr [rax+0x30], -4096
	inc	byte ptr [ImageBase+rip]
$_229:	test	byte ptr [r14], 0x08
	jz	$_230
	xor	r8d, r8d
	xor	edx, edx
	mov	ecx, 7
	call	LstWrite@PLT
$_230:	mov	eax, esi
$_231:	leave
	pop	rbx
	pop	rdi
	pop	rsi
	ret

SortSegments:
	mov	qword ptr [rsp+0x8], rcx
	push	rsi
	push	rdi
	push	rbx
	push	rbp
	mov	rbp, rsp
	sub	rsp, 56
	mov	dword ptr [rbp-0x4], 1
	mov	dword ptr [rbp-0x14], 1
	jmp	$_246

$_232:	xor	esi, esi
	mov	dword ptr [rbp-0x4], 0
	mov	rdi, qword ptr [SymTables+0x20+rip]
$_233:	test	rdi, rdi
	je	$_246
	cmp	qword ptr [rdi+0x80], 0
	je	$_246
	mov	dword ptr [rbp-0x8], 0
	mov	rbx, qword ptr [rdi+0x78]
	jmp	$_241

$_234:	mov	rcx, qword ptr [rdi+0x80]
	mov	rcx, qword ptr [rcx+0x78]
	mov	eax, dword ptr [rcx+0x38]
	cmp	dword ptr [rbx+0x38], eax
	jbe	$_235
	mov	dword ptr [rbp-0x8], 1
$_235:	jmp	$_242

$_236:	mov	rcx, qword ptr [rdi+0x80]
	mov	rdx, qword ptr [rcx+0x8]
	mov	rcx, qword ptr [rdi+0x8]
	call	tstrcmp@PLT
	cmp	eax, 0
	jle	$_237
	mov	dword ptr [rbp-0x8], 1
$_237:	jmp	$_242

$_238:	mov	rdx, qword ptr [rdi+0x80]
	mov	rcx, qword ptr [rdx+0x78]
	mov	eax, dword ptr [rcx+0x4C]
	cmp	dword ptr [rbx+0x4C], eax
	jle	$_239
	mov	dword ptr [rbp-0x8], 1
	jmp	$_240

$_239:	mov	eax, dword ptr [rcx+0x4C]
	cmp	dword ptr [rbx+0x4C], eax
	jnz	$_240
	mov	rdx, qword ptr [rdx+0x8]
	mov	rcx, qword ptr [rdi+0x8]
	call	tstricmp@PLT
	cmp	eax, 0
	jle	$_240
	mov	dword ptr [rbp-0x8], 1
$_240:	jmp	$_242

$_241:	cmp	dword ptr [rbp+0x28], 0
	je	$_234
	cmp	dword ptr [rbp+0x28], 1
	jz	$_236
	cmp	dword ptr [rbp+0x28], 2
	jz	$_238
$_242:	cmp	dword ptr [rbp-0x8], 0
	jz	$_245
	mov	rdx, qword ptr [rdi+0x80]
	mov	dword ptr [rbp-0x4], 1
	test	rsi, rsi
	jnz	$_243
	mov	qword ptr [SymTables+0x20+rip], rdx
	jmp	$_244

$_243:	mov	qword ptr [rsi+0x80], rdx
$_244:	mov	rax, qword ptr [rdx+0x80]
	mov	qword ptr [rdi+0x80], rax
	mov	qword ptr [rdx+0x80], rdi
$_245:	mov	rsi, rdi
	mov	rdi, qword ptr [rdi+0x80]
	jmp	$_233

$_246:
	cmp	dword ptr [rbp-0x4], 1
	je	$_232
	leave
	pop	rbx
	pop	rdi
	pop	rsi
	ret

SegmentModuleExit:
	push	rdi
	sub	rsp, 32
	cmp	byte ptr [r14+0x15], 0
	jz	$_247
	call	ModelSimSegmExit@PLT
$_247:	mov	rdi, qword ptr [r14+0x38]
	test	rdi, rdi
	jz	$_250
	mov	rdx, qword ptr [rdi+0x8]
	mov	ecx, 1010
	call	asmerr@PLT
	jmp	$_249

$_248:	mov	rcx, qword ptr [rdi+0x8]
	call	$_075
	test	eax, eax
	jnz	$_250
	mov	rdi, qword ptr [r14+0x38]
$_249:	test	rdi, rdi
	jnz	$_248
$_250:	xor	eax, eax
	add	rsp, 32
	pop	rdi
	ret

SegmentFini:
	call	$_010
	ret

SegmentInit:
	push	rsi
	push	rdi
	push	rbx
	push	rbp
	mov	rbp, rsp
	sub	rsp, 56
	xor	eax, eax
	mov	qword ptr [r14+0x38], rax
	mov	dword ptr [stkindex+rip], eax
	test	ecx, ecx
	jnz	$_251
	mov	dword ptr [grpdefidx+rip], eax
	mov	dword ptr [buffer_size+rip], eax
	mov	qword ptr [CV8Label+rip], rax
	mov	qword ptr [r14+0x2D8], rax
	jmp	$_254

$_251:	mov	rdi, qword ptr [SymTables+0x20+rip]
$_252:	test	rdi, rdi
	jz	$_254
	mov	rbx, qword ptr [rdi+0x78]
	cmp	qword ptr [rbx+0x28], 0
	jz	$_253
	mov	rcx, qword ptr [rbx+0x28]
	call	FixupRelease@PLT
	xor	eax, eax
	mov	qword ptr [rbx+0x28], rax
	mov	qword ptr [rbx+0x30], rax
$_253:	mov	rdi, qword ptr [rdi+0x80]
	jmp	$_252

$_254:
	cmp	dword ptr [Options+0x8C+rip], 1
	je	$_261
	mov	rdi, qword ptr [SymTables+0x20+rip]
	xor	ebx, ebx
$_255:	test	rdi, rdi
	jz	$_259
	mov	rcx, qword ptr [rdi+0x78]
	test	byte ptr [rcx+0x1C], 0x10
	jz	$_256
	jmp	$_258

$_256:	cmp	dword ptr [rcx+0x18], 0
	jz	$_258
	mov	eax, dword ptr [rdi+0x60]
	sub	eax, dword ptr [rcx+0x8]
	cmp	dword ptr [rcx+0x48], 1
	jnz	$_257
	mov	edx, eax
	xor	ecx, ecx
	cmp	ecx, dword ptr [buffer_size+rip]
	adc	ecx, 1
	shr	eax, cl
	add	eax, edx
$_257:	add	ebx, eax
$_258:	mov	rdi, qword ptr [rdi+0x80]
	jmp	$_255

$_259:	test	ebx, ebx
	jz	$_261
	cmp	ebx, dword ptr [buffer_size+rip]
	jbe	$_260
	mov	dword ptr [buffer_size+rip], ebx
	mov	ecx, ebx
	call	LclAlloc@PLT
	mov	qword ptr [pcodebuf+rip], rax
	jmp	$_261

$_260:	mov	rdx, qword ptr [pcodebuf+rip]
	mov	ecx, dword ptr [buffer_size+rip]
	shr	ecx, 2
	mov	rdi, rdx
	xor	eax, eax
	rep stosd
	mov	rax, rdx
$_261:	mov	rdi, qword ptr [SymTables+0x20+rip]
	mov	rsi, qword ptr [pcodebuf+rip]
$_262:	test	rdi, rdi
	jz	$_268
	mov	rcx, qword ptr [rdi+0x78]
	mov	dword ptr [rcx+0xC], 0
	test	byte ptr [rcx+0x1C], 0x10
	jnz	$_267
	cmp	dword ptr [rcx+0x18], 0
	jz	$_264
	cmp	dword ptr [Options+0x8C+rip], 1
	jnz	$_263
	lea	rax, [codebuf+rip]
	mov	qword ptr [rcx+0x10], rax
	jmp	$_264

$_263:	mov	qword ptr [rcx+0x10], rsi
	mov	eax, dword ptr [rdi+0x60]
	sub	eax, dword ptr [rcx+0x8]
	add	rsi, rax
$_264:	cmp	byte ptr [rcx+0x5C], 5
	jz	$_265
	mov	dword ptr [rdi+0x60], 0
$_265:	cmp	dword ptr [Options+0x8C+rip], 1
	jnz	$_266
	mov	dword ptr [rcx+0x8], 0
	and	byte ptr [rcx+0x1C], 0xF7
$_266:	mov	dword ptr [rcx+0x18], 0
	mov	qword ptr [rcx+0x28], 0
	mov	qword ptr [rcx+0x30], 0
$_267:	mov	rdi, qword ptr [rdi+0x80]
	jmp	$_262

$_268:
	mov	byte ptr [r14+0x4], 0
	cmp	dword ptr [UseSavedState+rip], 1
	jnz	$_270
	mov	rax, qword ptr [saved_CurrSeg+rip]
	mov	qword ptr [r14+0x38], rax
	mov	eax, dword ptr [saved_stkindex+rip]
	mov	dword ptr [stkindex+rip], eax
	cmp	dword ptr [stkindex+rip], 0
	jz	$_269
	imul	ecx, dword ptr [stkindex+rip], 8
	mov	r8d, ecx
	mov	rdx, qword ptr [saved_SegStack+rip]
	lea	rcx, [SegStack+rip]
	call	tmemcpy@PLT
$_269:	call	$_014
$_270:	leave
	pop	rbx
	pop	rdi
	pop	rsi
	ret

SegmentSaveState:
	sub	rsp, 40
	mov	rax, qword ptr [r14+0x38]
	mov	qword ptr [saved_CurrSeg+rip], rax
	mov	eax, dword ptr [stkindex+rip]
	mov	dword ptr [saved_stkindex+rip], eax
	cmp	dword ptr [stkindex+rip], 0
	jz	$_271
	imul	ecx, dword ptr [stkindex+rip], 8
	call	LclAlloc@PLT
	mov	qword ptr [saved_SegStack+rip], rax
	imul	ecx, dword ptr [stkindex+rip], 8
	mov	r8d, ecx
	lea	rdx, [SegStack+rip]
	mov	rcx, qword ptr [saved_SegStack+rip]
	call	tmemcpy@PLT
$_271:	add	rsp, 40
	ret


.SECTION .data
	.ALIGN	16

CV8Label:
	.quad  0x0000000000000000

symCurSeg:
	.quad  0x0000000000000000

SegAttrToken:
	.quad  DS0000
	.quad  DS0001
	.quad  DS0002
	.quad  DS0003
	.quad  DS0004
	.quad  DS0005
	.quad  DS0006
	.quad  DS0007
	.quad  DS0008
	.quad  DS0009
	.quad  DS000A
	.quad  DS000B
	.quad  DS000C
	.quad  DS000D
	.quad  DS000E
	.quad  DS000F
	.quad  DS0010
	.quad  DS0011
	.quad  DS0012
	.quad  DS0013
	.quad  DS0014
	.quad  DS0015
	.quad  DS0016
	.quad  DS0017
	.quad  DS0018
	.quad  DS0019
	.quad  DS001A

SegAttrValue:
	.byte  0x00, 0x01, 0x00, 0x02, 0x01, 0x02, 0x02, 0x02
	.byte  0x04, 0x02, 0x08, 0x02, 0x00, 0x82, 0x00, 0x04
	.byte  0x02, 0x04, 0x05, 0x04, 0x06, 0x04, 0x02, 0x04
	.byte  0x00, 0x84, 0x00, 0xC4, 0x00, 0x08, 0x01, 0x08
	.byte  0x02, 0x08, 0x01, 0x88, 0x00, 0xA0, 0x02, 0x20
	.byte  0x04, 0x20, 0x08, 0x20, 0x10, 0x20, 0x20, 0x20
	.byte  0x40, 0x20, 0x80, 0x20, 0x00, 0x10, 0x00, 0x00

grpdefidx:
	.int   0x00000000, 0x00000000

SegStack:
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00

stkindex: .int	 0x00000000, 0x00000000

saved_CurrSeg:
	.quad  0x0000000000000000

saved_SegStack:
	.quad  0x0000000000000000

saved_stkindex:
	.int   0x00000000, 0x00000000

codebuf:
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00
	.byte  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00

pcodebuf: .quad	 0x0000000000000000

buffer_size:
	.int   0x00000000

min_cpu:
	.byte  0x00, 0x00, 0x03, 0x00, 0x80, 0x00

ImageBase:
	.byte  0x00

DS001B:
	.byte  0x43, 0x4F, 0x4E, 0x53, 0x54, 0x00

DS001C:
	.byte  0x44, 0x42, 0x54, 0x59, 0x50, 0x00

DS001D:
	.byte  0x44, 0x42, 0x53, 0x59, 0x4D, 0x00

DS001E:
	.byte  0x43, 0x4F, 0x44, 0x45, 0x00

DS001F:
	.byte  0x44, 0x41, 0x54, 0x41, 0x00

DS0020:
	.byte  0x42, 0x53, 0x53, 0x00

DS0021:
	.byte  0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74
	.byte  0x65, 0x73, 0x00

DS0022:
	.byte  0x28, 0x00

DS0023:
	.byte  0x29, 0x00

DS0024:
	.byte  0x61, 0x6C, 0x69, 0x61, 0x73, 0x00

DS0025:
	.byte  0x61, 0x6C, 0x69, 0x67, 0x6E, 0x6D, 0x65, 0x6E
	.byte  0x74, 0x00

DS0026:
	.byte  0x63, 0x6F, 0x6D, 0x62, 0x69, 0x6E, 0x65, 0x00

DS0027:
	.byte  0x73, 0x65, 0x67, 0x6D, 0x65, 0x6E, 0x74, 0x20
	.byte  0x77, 0x6F, 0x72, 0x64, 0x20, 0x73, 0x69, 0x7A
	.byte  0x65, 0x00

DS0028:
	.byte  0x63, 0x68, 0x61, 0x72, 0x61, 0x63, 0x74, 0x65
	.byte  0x72, 0x69, 0x73, 0x74, 0x69, 0x63, 0x73, 0x00

DS0029:
	.byte  0x24, 0x24, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30
	.byte  0x00

DS002A:
	.byte  0x49, 0x4D, 0x41, 0x47, 0x45, 0x5F, 0x44, 0x4F
	.byte  0x53, 0x5F, 0x48, 0x45, 0x41, 0x44, 0x45, 0x52
	.byte  0x00

DS002B:
	.byte  0x5F, 0x5F, 0x49, 0x6D, 0x61, 0x67, 0x65, 0x42
	.byte  0x61, 0x73, 0x65, 0x00


.SECTION .rodata
	.ALIGN	16

DS0000:
	.byte  0x52, 0x45, 0x41, 0x44, 0x4F, 0x4E, 0x4C, 0x59
	.byte  0x00

DS0001:
	.byte  0x42, 0x59, 0x54, 0x45, 0x00

DS0002:
	.byte  0x57, 0x4F, 0x52, 0x44, 0x00

DS0003:
	.byte  0x44, 0x57, 0x4F, 0x52, 0x44, 0x00

DS0004:
	.byte  0x50, 0x41, 0x52, 0x41, 0x00

DS0005:
	.byte  0x50, 0x41, 0x47, 0x45, 0x00

DS0006:
	.byte  0x41, 0x4C, 0x49, 0x47, 0x4E, 0x00

DS0007:
	.byte  0x50, 0x52, 0x49, 0x56, 0x41, 0x54, 0x45, 0x00

DS0008:
	.byte  0x50, 0x55, 0x42, 0x4C, 0x49, 0x43, 0x00

DS0009:
	.byte  0x53, 0x54, 0x41, 0x43, 0x4B, 0x00

DS000A:
	.byte  0x43, 0x4F, 0x4D, 0x4D, 0x4F, 0x4E, 0x00

DS000B:
	.byte  0x4D, 0x45, 0x4D, 0x4F, 0x52, 0x59, 0x00

DS000C:
	.byte  0x41, 0x54, 0x00

DS000D:
	.byte  0x43, 0x4F, 0x4D, 0x44, 0x41, 0x54, 0x00

DS000E:
	.byte  0x55, 0x53, 0x45, 0x31, 0x36, 0x00

DS000F:
	.byte  0x55, 0x53, 0x45, 0x33, 0x32, 0x00

DS0010:
	.byte  0x55, 0x53, 0x45, 0x36, 0x34, 0x00

DS0011:
	.byte  0x46, 0x4C, 0x41, 0x54, 0x00

DS0012:
	.byte  0x49, 0x4E, 0x46, 0x4F, 0x00

DS0013:
	.byte  0x44, 0x49, 0x53, 0x43, 0x41, 0x52, 0x44, 0x00

DS0014:
	.byte  0x4E, 0x4F, 0x43, 0x41, 0x43, 0x48, 0x45, 0x00

DS0015:
	.byte  0x4E, 0x4F, 0x50, 0x41, 0x47, 0x45, 0x00

DS0016:
	.byte  0x53, 0x48, 0x41, 0x52, 0x45, 0x44, 0x00

DS0017:
	.byte  0x45, 0x58, 0x45, 0x43, 0x55, 0x54, 0x45, 0x00

DS0018:
	.byte  0x52, 0x45, 0x41, 0x44, 0x00

DS0019:
	.byte  0x57, 0x52, 0x49, 0x54, 0x45, 0x00

DS001A:
	.byte  0x41, 0x4C, 0x49, 0x41, 0x53, 0x00


.att_syntax prefix
