// File: /workspace/github_cpp_makefile_star2_O3/night-shift[P]Srl/src/lib/Environment.cpp
// Function: GLOBAL__sub_I_Environment.cpp
void Environment::write_conv(const Value& value, const String& val_name)
{
    MemBlock name_conv;

    if(val_name.encoding() == Encoding::UTF8) {
        name_conv = MemBlock(val_name.data(), val_name.size());

    } else {
        auto& buffer = this->str_buffer;
        auto size = Tools::conv_charset(Encoding::UTF8, val_name, buffer, true);
        name_conv = MemBlock(buffer.data(), size);
    }

    auto type = value.type();

    bool no_conversion_needed =
        /* scope types don't need conversion */
        TpTools::is_scope(type) || type == Type::Scope_End ||
        /* strings must be UTF8 in text formats */
        (type == Type::String && parser->get_format() != Format::Text &&
         value.encoding() == Encoding::UTF8) ||
        /* binary types must be converted to string in text formats */
        (type != Type::String && parser->get_format() == Format::Binary);

    if(no_conversion_needed) {
        parser->write(value, name_conv, this->out);

    } else {
        parser->write(this->conv_type(value), name_conv, this->out);
    }
}

// Assembly:
pushq %rbx
leaq 0x1b679(%rip), %rax     # 0x27860
movq %rax, 0x1b662(%rip)     # 0x27850
movl $0x6c6f6f42, 0x1b668(%rip) # imm = 0x6C6F6F42
movl $0x4, %eax
movq %rax, 0x1b654(%rip)     # 0x27858
xorl %ebx, %ebx
movb %bl, 0x1b658(%rip)      # 0x27864
leaq 0x1b66d(%rip), %rcx     # 0x27880
movq %rcx, 0x1b656(%rip)     # 0x27870
movw $0x3849, 0x1b65d(%rip)  # imm = 0x3849
movq $0x2, 0x1b64a(%rip) # 0x27878
movb %bl, 0x1b64e(%rip)      # 0x27882
leaq 0x1b665(%rip), %rcx     # 0x278a0
movq %rcx, 0x1b64e(%rip)     # 0x27890
movl $0x384955, 0x1b654(%rip) # imm = 0x384955
movl $0x3, %ecx
movq %rcx, 0x1b640(%rip)     # 0x27898
leaq 0x1b661(%rip), %rdx     # 0x278c0
movq %rdx, 0x1b64a(%rip)     # 0x278b0
movl $0x363149, 0x1b650(%rip) # imm = 0x363149
movq %rcx, 0x1b641(%rip)     # 0x278b8
leaq 0x1b662(%rip), %rdx     # 0x278e0
movq %rdx, 0x1b64b(%rip)     # 0x278d0
movl $0x36314955, 0x1b651(%rip) # imm = 0x36314955
movq %rax, 0x1b642(%rip)     # 0x278d8
movb %bl, 0x1b648(%rip)      # 0x278e4
leaq 0x1b65d(%rip), %rdx     # 0x27900
movq %rdx, 0x1b646(%rip)     # 0x278f0
movl $0x323349, 0x1b64c(%rip) # imm = 0x323349
movq %rcx, 0x1b63d(%rip)     # 0x278f8
leaq 0x1b65e(%rip), %rdx     # 0x27920
movq %rdx, 0x1b647(%rip)     # 0x27910
movl $0x32334955, 0x1b64d(%rip) # imm = 0x32334955
movq %rax, 0x1b63e(%rip)     # 0x27918
movb %bl, 0x1b644(%rip)      # 0x27924
leaq 0x1b659(%rip), %rdx     # 0x27940
movq %rdx, 0x1b642(%rip)     # 0x27930
movl $0x343649, 0x1b648(%rip) # imm = 0x343649
movq %rcx, 0x1b639(%rip)     # 0x27938
leaq 0x1b65a(%rip), %rcx     # 0x27960
movq %rcx, 0x1b643(%rip)     # 0x27950
movl $0x34364955, 0x1b649(%rip) # imm = 0x34364955
movq %rax, 0x1b63a(%rip)     # 0x27958
movb %bl, 0x1b640(%rip)      # 0x27964
leaq 0x1b655(%rip), %rcx     # 0x27980
movq %rcx, 0x1b63e(%rip)     # 0x27970
movl $0x32335046, 0x1b644(%rip) # imm = 0x32335046
movq %rax, 0x1b635(%rip)     # 0x27978
movb %bl, 0x1b63b(%rip)      # 0x27984
leaq 0x1b650(%rip), %rcx     # 0x279a0
movq %rcx, 0x1b639(%rip)     # 0x27990
movl $0x34365046, 0x1b63f(%rip) # imm = 0x34365046
movq %rax, 0x1b630(%rip)     # 0x27998
movb %bl, 0x1b636(%rip)      # 0x279a4
leaq 0x1b64b(%rip), %rcx     # 0x279c0
movq %rcx, 0x1b634(%rip)     # 0x279b0
movl $0x6c6c754e, 0x1b63a(%rip) # imm = 0x6C6C754E
movq %rax, 0x1b62b(%rip)     # 0x279b8
movb %bl, 0x1b631(%rip)      # 0x279c4
leaq 0x1b646(%rip), %rax     # 0x279e0
movq %rax, 0x1b62f(%rip)     # 0x279d0
movw $0x676e, 0x1b63a(%rip)  # imm = 0x676E
movl $0x69727453, 0x1b62c(%rip) # imm = 0x69727453
movl $0x6, %eax
movq %rax, 0x1b618(%rip)     # 0x279d8
movb %bl, 0x1b620(%rip)      # 0x279e6
leaq 0x1b633(%rip), %rcx     # 0x27a00
movq %rcx, 0x1b61c(%rip)     # 0x279f0
movw $0x7972, 0x1b627(%rip)  # imm = 0x7972
movl $0x616e6942, 0x1b619(%rip) # imm = 0x616E6942
movq %rax, 0x1b60a(%rip)     # 0x279f8
movb %bl, 0x1b612(%rip)      # 0x27a06
leaq 0x1b625(%rip), %rcx     # 0x27a20
movq %rcx, 0x1b60e(%rip)     # 0x27a10
movw $0x7463, 0x1b619(%rip)  # imm = 0x7463
movl $0x656a624f, 0x1b60b(%rip) # imm = 0x656A624F
movq %rax, 0x1b5fc(%rip)     # 0x27a18
movb %bl, 0x1b604(%rip)      # 0x27a26
leaq 0x1b617(%rip), %rax     # 0x27a40
movq %rax, 0x1b600(%rip)     # 0x27a30
movb $0x79, 0x1b60d(%rip)    # 0x27a44
movl $0x61727241, 0x1b5ff(%rip) # imm = 0x61727241
movq $0x5, 0x1b5ec(%rip) # 0x27a38
movb %bl, 0x1b5f3(%rip)      # 0x27a45
leaq 0x1b607(%rip), %rax     # 0x27a60
movq %rax, 0x1b5f0(%rip)     # 0x27a50
movabsq $0x6e455f65706f6353, %rax # imm = 0x6E455F65706F6353
movq %rax, 0x1b5ef(%rip)     # 0x27a60
movb $0x64, 0x1b5f0(%rip)    # 0x27a68
movq $0x9, 0x1b5d5(%rip) # 0x27a58
movb %bl, 0x1b5e0(%rip)      # 0x27a69
leaq -0x2f1(%rip), %rdi      # 0xc19f
leaq 0x1b391(%rip), %rdx     # 0x27828
xorl %esi, %esi
callq 0xb840
leaq 0x11bda(%rip), %rax     # 0x1e07f
movq %rax, 0x1b5c4(%rip)     # 0x27a70
movl $0x3, 0x1b5c2(%rip)     # 0x27a78
movw $0x10c, %ax             # imm = 0x10C
movw %ax, 0x1b5bb(%rip)      # 0x27a7c
movb %bl, 0x1b5b7(%rip)      # 0x27a7e
leaq 0x11b88(%rip), %rcx     # 0x1e056
movq %rcx, 0x1b5ab(%rip)     # 0x27a80
movl $0x5, %ecx
movl %ecx, 0x1b5a8(%rip)     # 0x27a88
movw %ax, 0x1b5a5(%rip)      # 0x27a8c
movb %bl, 0x1b5a1(%rip)      # 0x27a8e
leaq 0x11b7a(%rip), %rdx     # 0x1e06e
movq %rdx, 0x1b595(%rip)     # 0x27a90
movl %ecx, 0x1b597(%rip)     # 0x27a98
movw %ax, 0x1b594(%rip)      # 0x27a9c
movb %bl, 0x1b590(%rip)      # 0x27a9e
leaq 0x11b47(%rip), %rcx     # 0x1e05c
movq %rcx, 0x1b584(%rip)     # 0x27aa0
movl $0x6, 0x1b582(%rip)     # 0x27aa8
movw %ax, 0x1b57f(%rip)      # 0x27aac
movb %bl, 0x1b57b(%rip)      # 0x27aae
leaq 0x11b29(%rip), %rcx     # 0x1e063
movq %rcx, 0x1b56f(%rip)     # 0x27ab0
movl $0x10, 0x1b56d(%rip)    # 0x27ab8
movw %ax, 0x1b56a(%rip)      # 0x27abc
movb %bl, 0x1b566(%rip)      # 0x27abe
leaq 0x11b15(%rip), %rcx     # 0x1e074
movq %rcx, 0x1b55a(%rip)     # 0x27ac0
movl $0xe, 0x1b558(%rip)     # 0x27ac8
movw %ax, 0x1b555(%rip)      # 0x27acc
movb %bl, 0x1b551(%rip)      # 0x27ace
leaq 0x11aff(%rip), %rcx     # 0x1e083
movq %rcx, 0x1b545(%rip)     # 0x27ad0
movl $0xb, 0x1b543(%rip)     # 0x27ad8
movw %ax, 0x1b540(%rip)      # 0x27adc
movb %bl, 0x1b53c(%rip)      # 0x27ade
movq %rbx, 0x1b537(%rip)     # 0x27ae0
movl %ebx, 0x1b539(%rip)     # 0x27ae8
movw %ax, 0x1b536(%rip)      # 0x27aec
movb %bl, 0x1b532(%rip)      # 0x27aee
movq 0x1a97d(%rip), %rcx     # 0x26f40
movq %rbx, (%rcx)
movl %ebx, 0x8(%rcx)
movw %ax, 0xc(%rcx)
movb %bl, 0xe(%rcx)
xorl %edi, %edi
xorl %esi, %esi
callq 0xb580
movq %rax, 0x1b520(%rip)     # 0x27b00
popq %rbx
retq