// File: /workspace/github_c_makefile_star2_O0/aligrudi[P]neatmkfn/otf.c
// Function: otf_offsettable
int otf_offsettable(void *otf_otf, void *otf_off)
{
	int i;
	unsigned tag = U32(otf_off, 0);
	struct otf otf_cur = {otf_otf, otf_off};
	struct otf *otf = &otf_cur;
	if (tag != 0x00010000 && tag != 0x4F54544F)
		return 1;
	upm = U16(otf_table(otf, "head"), 18);
	otf_name(otf, otf_table(otf, "name"));
	otf_cmap(otf, otf_table(otf, "cmap"));
	otf_post(otf, otf_table(otf, "post"));
	if (otf_table(otf, "glyf"))
		otf_glyf(otf, otf_table(otf, "glyf"));
	if (otf_table(otf, "CFF "))
		otf_cff(otf, otf_table(otf, "CFF "));
	for (i = 0; i < glyph_n; i++) {
		if (!glyph_name[i][0]) {
			if (glyph_code[i])
				sprintf(glyph_name[i], "uni%04X", glyph_code[i]);
			else
				sprintf(glyph_name[i], "gl%05X", i);
		}
	}
	otf_hmtx(otf, otf_table(otf, "hmtx"));
	if (!mkfn_font(otf->name))
		return 0;
	for (i = 0; i < glyph_n; i++) {
		mkfn_char(glyph_name[i], -1,
			glyph_code[i] != 0xffff ? glyph_code[i] : 0,
			uwid(glyph_wid[i]),
			uwid(glyph_bbox[i][0]), uwid(glyph_bbox[i][1]),
			uwid(glyph_bbox[i][2]), uwid(glyph_bbox[i][3]));
	}
	mkfn_header(otf->name);
	if (otf_table(otf, "kern"))
		otf_kern(otf, otf_table(otf, "kern"));
	otf_feat(otf);
	return 0;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x120, %rsp            # imm = 0x120
movq %rdi, -0x10(%rbp)
movq %rsi, -0x18(%rbp)
movq -0x18(%rbp), %rax
movl (%rax), %edi
callq 0x3d0e0
movl %eax, -0x20(%rbp)
leaq -0xb0(%rbp), %rdi
xorl %esi, %esi
movl $0x90, %edx
callq 0x3d0f0
movq -0x10(%rbp), %rax
movq %rax, -0xb0(%rbp)
movq -0x18(%rbp), %rax
movq %rax, -0xa8(%rbp)
leaq -0xb0(%rbp), %rax
movq %rax, -0xb8(%rbp)
cmpl $0x10000, -0x20(%rbp)   # imm = 0x10000
je 0x3fd76
cmpl $0x4f54544f, -0x20(%rbp) # imm = 0x4F54544F
je 0x3fd76
movl $0x1, -0x4(%rbp)
jmp 0x40166
movq -0xb8(%rbp), %rdi
leaq 0x17d38(%rip), %rsi     # 0x57abc
callq 0x40180
movzwl 0x12(%rax), %edi
callq 0x3d090
movzwl %ax, %eax
movl %eax, 0x36a85(%rip)     # 0x76820
movq -0xb8(%rbp), %rax
movq %rax, -0xd0(%rbp)
movq -0xb8(%rbp), %rdi
leaq 0x17d0a(%rip), %rsi     # 0x57ac1
callq 0x40180
movq -0xd0(%rbp), %rdi
movq %rax, %rsi
callq 0x40230
movq -0xb8(%rbp), %rax
movq %rax, -0xc8(%rbp)
movq -0xb8(%rbp), %rdi
leaq 0x17cdf(%rip), %rsi     # 0x57ac6
callq 0x40180
movq -0xc8(%rbp), %rdi
movq %rax, %rsi
callq 0x403f0
movq -0xb8(%rbp), %rax
movq %rax, -0xc0(%rbp)
movq -0xb8(%rbp), %rdi
leaq 0x17cb4(%rip), %rsi     # 0x57acb
callq 0x40180
movq -0xc0(%rbp), %rdi
movq %rax, %rsi
callq 0x404d0
movq -0xb8(%rbp), %rdi
leaq 0x17c97(%rip), %rsi     # 0x57ad0
callq 0x40180
cmpq $0x0, %rax
je 0x3fe74
movq -0xb8(%rbp), %rax
movq %rax, -0xd8(%rbp)
movq -0xb8(%rbp), %rdi
leaq 0x17c70(%rip), %rsi     # 0x57ad0
callq 0x40180
movq -0xd8(%rbp), %rdi
movq %rax, %rsi
callq 0x40630
movq -0xb8(%rbp), %rdi
leaq 0x17c53(%rip), %rsi     # 0x57ad5
callq 0x40180
cmpq $0x0, %rax
je 0x3febd
movq -0xb8(%rbp), %rax
movq %rax, -0xe0(%rbp)
movq -0xb8(%rbp), %rdi
leaq 0x17c2c(%rip), %rsi     # 0x57ad5
callq 0x40180
movq -0xe0(%rbp), %rdi
movq %rax, %rsi
callq 0x40810
movl $0x0, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
cmpl 0x36957(%rip), %eax     # 0x76824
jge 0x3ff60
movslq -0x1c(%rbp), %rcx
leaq 0x36952(%rip), %rax     # 0x76830
shlq $0x6, %rcx
addq %rcx, %rax
cmpb $0x0, (%rax)
jne 0x3ff50
movslq -0x1c(%rbp), %rcx
leaq 0x43693b(%rip), %rax    # 0x476830
cmpl $0x0, (%rax,%rcx,4)
je 0x3ff2b
movslq -0x1c(%rbp), %rax
leaq 0x3692a(%rip), %rdi     # 0x76830
shlq $0x6, %rax
addq %rax, %rdi
movslq -0x1c(%rbp), %rcx
leaq 0x436918(%rip), %rax    # 0x476830
movl (%rax,%rcx,4), %edx
leaq 0x17bb8(%rip), %rsi     # 0x57ada
movb $0x0, %al
callq 0x3d180
jmp 0x3ff4e
movslq -0x1c(%rbp), %rax
leaq 0x368fa(%rip), %rdi     # 0x76830
shlq $0x6, %rax
addq %rax, %rdi
movl -0x1c(%rbp), %edx
leaq 0x17b9b(%rip), %rsi     # 0x57ae2
movb $0x0, %al
callq 0x3d180
jmp 0x3ff50
jmp 0x3ff52
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x3fec4
movq -0xb8(%rbp), %rax
movq %rax, -0xe8(%rbp)
movq -0xb8(%rbp), %rdi
leaq 0x17b6d(%rip), %rsi     # 0x57ae9
callq 0x40180
movq -0xe8(%rbp), %rdi
movq %rax, %rsi
callq 0x40be0
movq -0xb8(%rbp), %rdi
addq $0x10, %rdi
callq 0x3d470
cmpl $0x0, %eax
jne 0x3ffb1
movl $0x0, -0x4(%rbp)
jmp 0x40166
movl $0x0, -0x1c(%rbp)
movl -0x1c(%rbp), %eax
cmpl 0x36863(%rip), %eax     # 0x76824
jge 0x400fa
movslq -0x1c(%rbp), %rcx
leaq 0x3685e(%rip), %rax     # 0x76830
shlq $0x6, %rcx
addq %rcx, %rax
movq %rax, -0xf0(%rbp)
movslq -0x1c(%rbp), %rcx
leaq 0x436845(%rip), %rax    # 0x476830
cmpl $0xffff, (%rax,%rcx,4)  # imm = 0xFFFF
je 0x4000a
movslq -0x1c(%rbp), %rcx
leaq 0x436831(%rip), %rax    # 0x476830
movl (%rax,%rcx,4), %eax
movl %eax, -0xf4(%rbp)
jmp 0x40014
xorl %eax, %eax
movl %eax, -0xf4(%rbp)
jmp 0x40014
movl -0xf4(%rbp), %eax
movl %eax, -0x108(%rbp)
movslq -0x1c(%rbp), %rcx
leaq 0x476805(%rip), %rax    # 0x4b6830
movl (%rax,%rcx,4), %edi
callq 0x40ca0
movl %eax, -0x104(%rbp)
movslq -0x1c(%rbp), %rcx
leaq 0x4b67ec(%rip), %rax    # 0x4f6830
shlq $0x4, %rcx
addq %rcx, %rax
movl (%rax), %edi
callq 0x40ca0
movl %eax, -0x100(%rbp)
movslq -0x1c(%rbp), %rcx
leaq 0x4b67cd(%rip), %rax    # 0x4f6830
shlq $0x4, %rcx
addq %rcx, %rax
movl 0x4(%rax), %edi
callq 0x40ca0
movl %eax, -0xfc(%rbp)
movslq -0x1c(%rbp), %rcx
leaq 0x4b67ad(%rip), %rax    # 0x4f6830
shlq $0x4, %rcx
addq %rcx, %rax
movl 0x8(%rax), %edi
callq 0x40ca0
movl %eax, -0xf8(%rbp)
movslq -0x1c(%rbp), %rcx
leaq 0x4b678d(%rip), %rax    # 0x4f6830
shlq $0x4, %rcx
addq %rcx, %rax
movl 0xc(%rax), %edi
callq 0x40ca0
movq -0xf0(%rbp), %rdi
movl -0x108(%rbp), %edx
movl -0x104(%rbp), %ecx
movl -0x100(%rbp), %r8d
movl -0xfc(%rbp), %r9d
movl -0xf8(%rbp), %r10d
movl $0xffffffff, %esi       # imm = 0xFFFFFFFF
movl %r10d, (%rsp)
movl %eax, 0x8(%rsp)
callq 0x3dbb0
movl -0x1c(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x1c(%rbp)
jmp 0x3ffb8
movq -0xb8(%rbp), %rdi
addq $0x10, %rdi
callq 0x3d650
movq -0xb8(%rbp), %rdi
leaq 0x179d6(%rip), %rsi     # 0x57aee
callq 0x40180
cmpq $0x0, %rax
je 0x40153
movq -0xb8(%rbp), %rax
movq %rax, -0x110(%rbp)
movq -0xb8(%rbp), %rdi
leaq 0x179af(%rip), %rsi     # 0x57aee
callq 0x40180
movq -0x110(%rbp), %rdi
movq %rax, %rsi
callq 0x40d20
movq -0xb8(%rbp), %rdi
callq 0x40ea0
movl $0x0, -0x4(%rbp)
movl -0x4(%rbp), %eax
addq $0x120, %rsp            # imm = 0x120
popq %rbp
retq
nopw %cs:(%rax,%rax)