// File: cphinton42[P]hinton-language/src/ast.cpp
// Function: init_primitive_types()
void init_primitive_types()
{
    zero_memory(&u8_t_ast, 1);
    zero_memory(&u16_t_ast, 1);
    zero_memory(&u32_t_ast, 1);
    zero_memory(&u64_t_ast, 1);
    zero_memory(&s8_t_ast, 1);
    zero_memory(&s16_t_ast, 1);
    zero_memory(&s32_t_ast, 1);
    zero_memory(&s64_t_ast, 1);
    zero_memory(&bool8_t_ast, 1);
    zero_memory(&bool16_t_ast, 1);
    zero_memory(&bool32_t_ast, 1);
    zero_memory(&bool64_t_ast, 1);
    zero_memory(&f32_t_ast, 1);
    zero_memory(&f64_t_ast, 1);
    zero_memory(&void_t_ast, 1);
    zero_memory(&type_t_ast, 1);
    zero_memory(&intlike_t_ast, 1);
    zero_memory(&floatlike_t_ast, 1);
    zero_memory(&numberlike_t_ast, 1);
    zero_memory(&boollike_t_ast, 1);
    
    u8_t_ast.type = AST_Type::primitive_ast;
    u16_t_ast.type = AST_Type::primitive_ast;
    u32_t_ast.type = AST_Type::primitive_ast;
    u64_t_ast.type = AST_Type::primitive_ast;
    s8_t_ast.type = AST_Type::primitive_ast;
    s16_t_ast.type = AST_Type::primitive_ast;
    s32_t_ast.type = AST_Type::primitive_ast;
    s64_t_ast.type = AST_Type::primitive_ast;
    bool8_t_ast.type = AST_Type::primitive_ast;
    bool16_t_ast.type = AST_Type::primitive_ast;
    bool32_t_ast.type = AST_Type::primitive_ast;
    bool64_t_ast.type = AST_Type::primitive_ast;
    f32_t_ast.type = AST_Type::primitive_ast;
    f64_t_ast.type = AST_Type::primitive_ast;
    void_t_ast.type = AST_Type::primitive_ast;
    type_t_ast.type = AST_Type::primitive_ast;
    intlike_t_ast.type = AST_Type::primitive_ast;
    floatlike_t_ast.type = AST_Type::primitive_ast;
    numberlike_t_ast.type = AST_Type::primitive_ast;
    boollike_t_ast.type = AST_Type::primitive_ast;
    
    u8_t_ast.flags |= AST_FLAG_SYNTHETIC;
    u16_t_ast.flags |= AST_FLAG_SYNTHETIC;
    u32_t_ast.flags |= AST_FLAG_SYNTHETIC;
    u64_t_ast.flags |= AST_FLAG_SYNTHETIC;
    s8_t_ast.flags |= AST_FLAG_SYNTHETIC;
    s16_t_ast.flags |= AST_FLAG_SYNTHETIC;
    s32_t_ast.flags |= AST_FLAG_SYNTHETIC;
    s64_t_ast.flags |= AST_FLAG_SYNTHETIC;
    bool8_t_ast.flags |= AST_FLAG_SYNTHETIC;
    bool16_t_ast.flags |= AST_FLAG_SYNTHETIC;
    bool32_t_ast.flags |= AST_FLAG_SYNTHETIC;
    bool64_t_ast.flags |= AST_FLAG_SYNTHETIC;
    f32_t_ast.flags |= AST_FLAG_SYNTHETIC;
    f64_t_ast.flags |= AST_FLAG_SYNTHETIC;
    void_t_ast.flags |= AST_FLAG_SYNTHETIC;
    type_t_ast.flags |= AST_FLAG_SYNTHETIC;
    intlike_t_ast.flags |= AST_FLAG_SYNTHETIC;
    floatlike_t_ast.flags |= AST_FLAG_SYNTHETIC;
    numberlike_t_ast.flags |= AST_FLAG_SYNTHETIC;
    boollike_t_ast.flags |= AST_FLAG_SYNTHETIC;
    
    u8_t_ast.s = next_serial++;
    u16_t_ast.s = next_serial++;
    u32_t_ast.s = next_serial++;
    u64_t_ast.s = next_serial++;
    s8_t_ast.s = next_serial++;
    s16_t_ast.s = next_serial++;
    s32_t_ast.s = next_serial++;
    s64_t_ast.s = next_serial++;
    bool8_t_ast.s = next_serial++;
    bool16_t_ast.s = next_serial++;
    bool32_t_ast.s = next_serial++;
    bool64_t_ast.s = next_serial++;
    f32_t_ast.s = next_serial++;
    f64_t_ast.s = next_serial++;
    void_t_ast.s = next_serial++;
    type_t_ast.s = next_serial++;
    intlike_t_ast.s = next_serial++;
    floatlike_t_ast.s = next_serial++;
    numberlike_t_ast.s = next_serial++;
    boollike_t_ast.s = next_serial++;
    
    set_resolved_type(&u8_t_ast, &type_t_ast);
    set_resolved_type(&u16_t_ast, &type_t_ast);
    set_resolved_type(&u32_t_ast, &type_t_ast);
    set_resolved_type(&u64_t_ast, &type_t_ast);
    set_resolved_type(&s8_t_ast, &type_t_ast);
    set_resolved_type(&s16_t_ast, &type_t_ast);
    set_resolved_type(&s32_t_ast, &type_t_ast);
    set_resolved_type(&s64_t_ast, &type_t_ast);
    set_resolved_type(&bool8_t_ast, &type_t_ast);
    set_resolved_type(&bool16_t_ast, &type_t_ast);
    set_resolved_type(&bool32_t_ast, &type_t_ast);
    set_resolved_type(&bool64_t_ast, &type_t_ast);
    set_resolved_type(&f32_t_ast, &type_t_ast);
    set_resolved_type(&f64_t_ast, &type_t_ast);
    set_resolved_type(&void_t_ast, &type_t_ast);
    set_resolved_type(&type_t_ast, &type_t_ast);
    set_resolved_type(&intlike_t_ast, &type_t_ast);
    set_resolved_type(&floatlike_t_ast, &type_t_ast);
    set_resolved_type(&numberlike_t_ast, &type_t_ast);
    set_resolved_type(&boollike_t_ast, &type_t_ast);
    
    u8_t_ast.primitive = PRIM_U8;
    u16_t_ast.primitive = PRIM_U16;
    u32_t_ast.primitive = PRIM_U32;
    u64_t_ast.primitive = PRIM_U64;
    s8_t_ast.primitive = PRIM_S8;
    s16_t_ast.primitive = PRIM_S16;
    s32_t_ast.primitive = PRIM_S32;
    s64_t_ast.primitive = PRIM_S64;
    bool8_t_ast.primitive = PRIM_BOOL8;
    bool16_t_ast.primitive = PRIM_BOOL16;
    bool32_t_ast.primitive = PRIM_BOOL32;
    bool64_t_ast.primitive = PRIM_BOOL64;
    f32_t_ast.primitive = PRIM_F32;
    f64_t_ast.primitive = PRIM_F64;
    void_t_ast.primitive = PRIM_VOID;
    type_t_ast.primitive = PRIM_TYPE;
    intlike_t_ast.primitive = PRIM_INTLIKE;
    floatlike_t_ast.primitive = PRIM_FLOATLIKE;
    numberlike_t_ast.primitive = PRIM_NUMBERLIKE;
    boollike_t_ast.primitive = PRIM_BOOLLIKE;
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
leaq 0x1c83d(%rip), %rdi     # 0x1fc98
movl $0x28, %esi
callq 0x16f80
leaq 0x1c854(%rip), %rdi     # 0x1fcc0
movl $0x28, %esi
callq 0x16f80
leaq 0x1c86b(%rip), %rdi     # 0x1fce8
movl $0x28, %esi
callq 0x16f80
leaq 0x1c882(%rip), %rdi     # 0x1fd10
movl $0x28, %esi
callq 0x16f80
leaq 0x1c899(%rip), %rdi     # 0x1fd38
movl $0x28, %esi
callq 0x16f80
leaq 0x1c8b0(%rip), %rdi     # 0x1fd60
movl $0x28, %esi
callq 0x16f80
leaq 0x1c8c7(%rip), %rdi     # 0x1fd88
movl $0x28, %esi
callq 0x16f80
leaq 0x1c8de(%rip), %rdi     # 0x1fdb0
movl $0x28, %esi
callq 0x16f80
leaq 0x1c8f5(%rip), %rdi     # 0x1fdd8
movl $0x28, %esi
callq 0x16f80
leaq 0x1c90c(%rip), %rdi     # 0x1fe00
movl $0x28, %esi
callq 0x16f80
leaq 0x1c923(%rip), %rdi     # 0x1fe28
movl $0x28, %esi
callq 0x16f80
leaq 0x1c93a(%rip), %rdi     # 0x1fe50
movl $0x28, %esi
callq 0x16f80
leaq 0x1c951(%rip), %rdi     # 0x1fe78
movl $0x28, %esi
callq 0x16f80
leaq 0x1c968(%rip), %rdi     # 0x1fea0
movl $0x28, %esi
callq 0x16f80
leaq 0x1c97f(%rip), %rdi     # 0x1fec8
movl $0x28, %esi
callq 0x16f80
leaq 0x1c996(%rip), %rdi     # 0x1fef0
movl $0x28, %esi
callq 0x16f80
leaq 0x1c9ad(%rip), %rdi     # 0x1ff18
movl $0x28, %esi
callq 0x16f80
leaq 0x1c9c4(%rip), %rdi     # 0x1ff40
movl $0x28, %esi
callq 0x16f80
leaq 0x1c9db(%rip), %rdi     # 0x1ff68
movl $0x28, %esi
callq 0x16f80
leaq 0x1c9f2(%rip), %rdi     # 0x1ff90
movl $0x28, %esi
callq 0x16f80
movw $0x11, 0x1c6e7(%rip)    # 0x1fc98
movw $0x11, 0x1c706(%rip)    # 0x1fcc0
movw $0x11, 0x1c725(%rip)    # 0x1fce8
movw $0x11, 0x1c744(%rip)    # 0x1fd10
movw $0x11, 0x1c763(%rip)    # 0x1fd38
movw $0x11, 0x1c782(%rip)    # 0x1fd60
movw $0x11, 0x1c7a1(%rip)    # 0x1fd88
movw $0x11, 0x1c7c0(%rip)    # 0x1fdb0
movw $0x11, 0x1c7df(%rip)    # 0x1fdd8
movw $0x11, 0x1c7fe(%rip)    # 0x1fe00
movw $0x11, 0x1c81d(%rip)    # 0x1fe28
movw $0x11, 0x1c83c(%rip)    # 0x1fe50
movw $0x11, 0x1c85b(%rip)    # 0x1fe78
movw $0x11, 0x1c87a(%rip)    # 0x1fea0
movw $0x11, 0x1c899(%rip)    # 0x1fec8
movw $0x11, 0x1c8b8(%rip)    # 0x1fef0
movw $0x11, 0x1c8d7(%rip)    # 0x1ff18
movw $0x11, 0x1c8f6(%rip)    # 0x1ff40
movw $0x11, 0x1c915(%rip)    # 0x1ff68
movw $0x11, 0x1c934(%rip)    # 0x1ff90
movzwl 0x1c637(%rip), %eax     # 0x1fc9a
orl $0x1, %eax
movw %ax, 0x1c62d(%rip)      # 0x1fc9a
movzwl 0x1c64e(%rip), %eax     # 0x1fcc2
orl $0x1, %eax
movw %ax, 0x1c644(%rip)      # 0x1fcc2
movzwl 0x1c665(%rip), %eax     # 0x1fcea
orl $0x1, %eax
movw %ax, 0x1c65b(%rip)      # 0x1fcea
movzwl 0x1c67c(%rip), %eax     # 0x1fd12
orl $0x1, %eax
movw %ax, 0x1c672(%rip)      # 0x1fd12
movzwl 0x1c693(%rip), %eax     # 0x1fd3a
orl $0x1, %eax
movw %ax, 0x1c689(%rip)      # 0x1fd3a
movzwl 0x1c6aa(%rip), %eax     # 0x1fd62
orl $0x1, %eax
movw %ax, 0x1c6a0(%rip)      # 0x1fd62
movzwl 0x1c6c1(%rip), %eax     # 0x1fd8a
orl $0x1, %eax
movw %ax, 0x1c6b7(%rip)      # 0x1fd8a
movzwl 0x1c6d8(%rip), %eax     # 0x1fdb2
orl $0x1, %eax
movw %ax, 0x1c6ce(%rip)      # 0x1fdb2
movzwl 0x1c6ef(%rip), %eax     # 0x1fdda
orl $0x1, %eax
movw %ax, 0x1c6e5(%rip)      # 0x1fdda
movzwl 0x1c706(%rip), %eax     # 0x1fe02
orl $0x1, %eax
movw %ax, 0x1c6fc(%rip)      # 0x1fe02
movzwl 0x1c71d(%rip), %eax     # 0x1fe2a
orl $0x1, %eax
movw %ax, 0x1c713(%rip)      # 0x1fe2a
movzwl 0x1c734(%rip), %eax     # 0x1fe52
orl $0x1, %eax
movw %ax, 0x1c72a(%rip)      # 0x1fe52
movzwl 0x1c74b(%rip), %eax     # 0x1fe7a
orl $0x1, %eax
movw %ax, 0x1c741(%rip)      # 0x1fe7a
movzwl 0x1c762(%rip), %eax     # 0x1fea2
orl $0x1, %eax
movw %ax, 0x1c758(%rip)      # 0x1fea2
movzwl 0x1c779(%rip), %eax     # 0x1feca
orl $0x1, %eax
movw %ax, 0x1c76f(%rip)      # 0x1feca
movzwl 0x1c790(%rip), %eax     # 0x1fef2
orl $0x1, %eax
movw %ax, 0x1c786(%rip)      # 0x1fef2
movzwl 0x1c7a7(%rip), %eax     # 0x1ff1a
orl $0x1, %eax
movw %ax, 0x1c79d(%rip)      # 0x1ff1a
movzwl 0x1c7be(%rip), %eax     # 0x1ff42
orl $0x1, %eax
movw %ax, 0x1c7b4(%rip)      # 0x1ff42
movzwl 0x1c7d5(%rip), %eax     # 0x1ff6a
orl $0x1, %eax
movw %ax, 0x1c7cb(%rip)      # 0x1ff6a
movzwl 0x1c7ec(%rip), %eax     # 0x1ff92
orl $0x1, %eax
movw %ax, 0x1c7e2(%rip)      # 0x1ff92
movl 0x1c4da(%rip), %eax     # 0x1fc90
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, 0x1c4cf(%rip)     # 0x1fc90
movl %eax, 0x1c4d5(%rip)     # 0x1fc9c
movl 0x1c4c3(%rip), %eax     # 0x1fc90
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, 0x1c4b8(%rip)     # 0x1fc90
movl %eax, 0x1c4e6(%rip)     # 0x1fcc4
movl 0x1c4ac(%rip), %eax     # 0x1fc90
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, 0x1c4a1(%rip)     # 0x1fc90
movl %eax, 0x1c4f7(%rip)     # 0x1fcec
movl 0x1c495(%rip), %eax     # 0x1fc90
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, 0x1c48a(%rip)     # 0x1fc90
movl %eax, 0x1c508(%rip)     # 0x1fd14
movl 0x1c47e(%rip), %eax     # 0x1fc90
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, 0x1c473(%rip)     # 0x1fc90
movl %eax, 0x1c519(%rip)     # 0x1fd3c
movl 0x1c467(%rip), %eax     # 0x1fc90
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, 0x1c45c(%rip)     # 0x1fc90
movl %eax, 0x1c52a(%rip)     # 0x1fd64
movl 0x1c450(%rip), %eax     # 0x1fc90
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, 0x1c445(%rip)     # 0x1fc90
movl %eax, 0x1c53b(%rip)     # 0x1fd8c
movl 0x1c439(%rip), %eax     # 0x1fc90
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, 0x1c42e(%rip)     # 0x1fc90
movl %eax, 0x1c54c(%rip)     # 0x1fdb4
movl 0x1c422(%rip), %eax     # 0x1fc90
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, 0x1c417(%rip)     # 0x1fc90
movl %eax, 0x1c55d(%rip)     # 0x1fddc
movl 0x1c40b(%rip), %eax     # 0x1fc90
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, 0x1c400(%rip)     # 0x1fc90
movl %eax, 0x1c56e(%rip)     # 0x1fe04
movl 0x1c3f4(%rip), %eax     # 0x1fc90
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, 0x1c3e9(%rip)     # 0x1fc90
movl %eax, 0x1c57f(%rip)     # 0x1fe2c
movl 0x1c3dd(%rip), %eax     # 0x1fc90
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, 0x1c3d2(%rip)     # 0x1fc90
movl %eax, 0x1c590(%rip)     # 0x1fe54
movl 0x1c3c6(%rip), %eax     # 0x1fc90
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, 0x1c3bb(%rip)     # 0x1fc90
movl %eax, 0x1c5a1(%rip)     # 0x1fe7c
movl 0x1c3af(%rip), %eax     # 0x1fc90
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, 0x1c3a4(%rip)     # 0x1fc90
movl %eax, 0x1c5b2(%rip)     # 0x1fea4
movl 0x1c398(%rip), %eax     # 0x1fc90
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, 0x1c38d(%rip)     # 0x1fc90
movl %eax, 0x1c5c3(%rip)     # 0x1fecc
movl 0x1c381(%rip), %eax     # 0x1fc90
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, 0x1c376(%rip)     # 0x1fc90
movl %eax, 0x1c5d4(%rip)     # 0x1fef4
movl 0x1c36a(%rip), %eax     # 0x1fc90
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, 0x1c35f(%rip)     # 0x1fc90
movl %eax, 0x1c5e5(%rip)     # 0x1ff1c
movl 0x1c353(%rip), %eax     # 0x1fc90
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, 0x1c348(%rip)     # 0x1fc90
movl %eax, 0x1c5f6(%rip)     # 0x1ff44
movl 0x1c33c(%rip), %eax     # 0x1fc90
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, 0x1c331(%rip)     # 0x1fc90
movl %eax, 0x1c607(%rip)     # 0x1ff6c
movl 0x1c325(%rip), %eax     # 0x1fc90
movl %eax, %ecx
addl $0x1, %ecx
movl %ecx, 0x1c31a(%rip)     # 0x1fc90
movl %eax, 0x1c618(%rip)     # 0x1ff94
leaq 0x1c315(%rip), %rdi     # 0x1fc98
leaq 0x1c566(%rip), %rsi     # 0x1fef0
callq 0x3be0
leaq 0x1c32a(%rip), %rdi     # 0x1fcc0
leaq 0x1c553(%rip), %rsi     # 0x1fef0
callq 0x3be0
leaq 0x1c33f(%rip), %rdi     # 0x1fce8
leaq 0x1c540(%rip), %rsi     # 0x1fef0
callq 0x3be0
leaq 0x1c354(%rip), %rdi     # 0x1fd10
leaq 0x1c52d(%rip), %rsi     # 0x1fef0
callq 0x3be0
leaq 0x1c369(%rip), %rdi     # 0x1fd38
leaq 0x1c51a(%rip), %rsi     # 0x1fef0
callq 0x3be0
leaq 0x1c37e(%rip), %rdi     # 0x1fd60
leaq 0x1c507(%rip), %rsi     # 0x1fef0
callq 0x3be0
leaq 0x1c393(%rip), %rdi     # 0x1fd88
leaq 0x1c4f4(%rip), %rsi     # 0x1fef0
callq 0x3be0
leaq 0x1c3a8(%rip), %rdi     # 0x1fdb0
leaq 0x1c4e1(%rip), %rsi     # 0x1fef0
callq 0x3be0
leaq 0x1c3bd(%rip), %rdi     # 0x1fdd8
leaq 0x1c4ce(%rip), %rsi     # 0x1fef0
callq 0x3be0
leaq 0x1c3d2(%rip), %rdi     # 0x1fe00
leaq 0x1c4bb(%rip), %rsi     # 0x1fef0
callq 0x3be0
leaq 0x1c3e7(%rip), %rdi     # 0x1fe28
leaq 0x1c4a8(%rip), %rsi     # 0x1fef0
callq 0x3be0
leaq 0x1c3fc(%rip), %rdi     # 0x1fe50
leaq 0x1c495(%rip), %rsi     # 0x1fef0
callq 0x3be0
leaq 0x1c411(%rip), %rdi     # 0x1fe78
leaq 0x1c482(%rip), %rsi     # 0x1fef0
callq 0x3be0
leaq 0x1c426(%rip), %rdi     # 0x1fea0
leaq 0x1c46f(%rip), %rsi     # 0x1fef0
callq 0x3be0
leaq 0x1c43b(%rip), %rdi     # 0x1fec8
leaq 0x1c45c(%rip), %rsi     # 0x1fef0
callq 0x3be0
leaq 0x1c450(%rip), %rsi     # 0x1fef0
movq %rsi, %rdi
callq 0x3be0
leaq 0x1c469(%rip), %rdi     # 0x1ff18
leaq 0x1c43a(%rip), %rsi     # 0x1fef0
callq 0x3be0
leaq 0x1c47e(%rip), %rdi     # 0x1ff40
leaq 0x1c427(%rip), %rsi     # 0x1fef0
callq 0x3be0
leaq 0x1c493(%rip), %rdi     # 0x1ff68
leaq 0x1c414(%rip), %rsi     # 0x1fef0
callq 0x3be0
leaq 0x1c4a8(%rip), %rdi     # 0x1ff90
leaq 0x1c401(%rip), %rsi     # 0x1fef0
callq 0x3be0
movq $0x31, 0x1c1b9(%rip) # 0x1fcb8
movq $0x32, 0x1c1d6(%rip) # 0x1fce0
movq $0x33, 0x1c1f3(%rip) # 0x1fd08
movq $0x34, 0x1c210(%rip) # 0x1fd30
movq $0x29, 0x1c22d(%rip) # 0x1fd58
movq $0x2a, 0x1c24a(%rip) # 0x1fd80
movq $0x2b, 0x1c267(%rip) # 0x1fda8
movq $0x2c, 0x1c284(%rip) # 0x1fdd0
movq $0x81, 0x1c2a1(%rip) # 0x1fdf8
movq $0x82, 0x1c2be(%rip) # 0x1fe20
movq $0x83, 0x1c2db(%rip) # 0x1fe48
movq $0x84, 0x1c2f8(%rip) # 0x1fe70
movq $0x43, 0x1c315(%rip) # 0x1fe98
movq $0x44, 0x1c332(%rip) # 0x1fec0
movq $0x0, 0x1c34f(%rip) # 0x1fee8
movq $0x100, 0x1c36c(%rip) # imm = 0x100
movq $0x20, 0x1c389(%rip) # 0x1ff38
movq $0x40, 0x1c3a6(%rip) # 0x1ff60
movq $0x60, 0x1c3c3(%rip) # 0x1ff88
movq $0x80, 0x1c3e0(%rip) # 0x1ffb0
popq %rbp
retq
nopw %cs:(%rax,%rax)