// File: /workspace/github_c_makefile_star2_O3/0x3f00[P]PhotonCpp/./PhotonFileHeader.h
// Function: PhotonFileHeader::save(PhotonOutputStream, int, int, int, int)
void save(PhotonOutputStream os, int previewOnePos, int previewTwoPos, int layerDefinitionPos, int parametersPos) {
        previewOneOffsetAddress_ = previewOnePos;
        previewTwoOffsetAddress_ = previewTwoPos;
        layersDefinitionOffsetAddress_ = layerDefinitionPos;
        printParametersOffsetAddress_ = parametersPos;

        os.writeInt(header1_);
        os.writeInt(version_);

        os.writeFloat(bedXmm_);
        os.writeFloat(bedYmm_);
        os.writeFloat(bedZmm_);

        os.writeInt(unknown1_);
        os.writeInt(unknown2_);
        os.writeInt(unknown3_);

        os.writeFloat(layerHeightMilimeter_);
        os.writeFloat(exposureTimeSeconds_);
        os.writeFloat(exposureBottomTimeSeconds_);

        os.writeFloat(offTimeSeconds_);
        os.writeInt(bottomLayers_);

        os.writeInt(resolutionX_);
        os.writeInt(resolutionY_);

        os.writeInt(previewOneOffsetAddress_);
        os.writeInt(layersDefinitionOffsetAddress_);

        os.writeInt(numberOfLayers_);

        os.writeInt(previewTwoOffsetAddress_);
        os.writeInt(printTimeSeconds_);

        os.writeInt(projectType_);

        os.writeInt(printParametersOffsetAddress_);
        os.writeInt(printParametersSize_);
        os.writeInt(antiAliasingLevel_);

        os.writeShort(lightPWM_);
        os.writeShort(bottomLightPWM_);

        os.writeInt(unknown4_);
        os.writeInt(unknown5_);
        if (version_>1) {
            os.writeInt(unknown6_);
        }
    }

// Assembly:
pushq %rbp
movq %rsp, %rbp
pushq %r15
pushq %r14
pushq %rbx
pushq %rax
movq %rdi, %rbx
leaq -0x20(%rbp), %r14
movq %rsi, (%r14)
movl %edx, 0x3c(%rdi)
movl %ecx, 0x48(%rdi)
movl %r8d, 0x40(%rdi)
movl %r9d, 0x54(%rdi)
movl (%rdi), %esi
movq %r14, %rdi
callq 0xbff4
movl 0x4(%rbx), %esi
movq %r14, %rdi
callq 0xbff4
movl 0x8(%rbx), %esi
movq %r14, %rdi
callq 0xbff4
movl 0xc(%rbx), %esi
movq %r14, %rdi
callq 0xbff4
movl 0x10(%rbx), %esi
movq %r14, %rdi
callq 0xbff4
movl 0x14(%rbx), %esi
movq %r14, %rdi
callq 0xbff4
movl 0x18(%rbx), %esi
movq %r14, %rdi
callq 0xbff4
movl 0x1c(%rbx), %esi
movq %r14, %rdi
callq 0xbff4
movl 0x20(%rbx), %esi
movq %r14, %rdi
callq 0xbff4
movl 0x24(%rbx), %esi
movq %r14, %rdi
callq 0xbff4
movl 0x28(%rbx), %esi
movq %r14, %rdi
callq 0xbff4
movl 0x2c(%rbx), %esi
movq %r14, %rdi
callq 0xbff4
movl 0x30(%rbx), %esi
movq %r14, %rdi
callq 0xbff4
movl 0x34(%rbx), %esi
movq %r14, %rdi
callq 0xbff4
movl 0x38(%rbx), %esi
movq %r14, %rdi
callq 0xbff4
movl 0x3c(%rbx), %esi
movq %r14, %rdi
callq 0xbff4
movl 0x40(%rbx), %esi
movq %r14, %rdi
callq 0xbff4
movl 0x44(%rbx), %esi
movq %r14, %rdi
callq 0xbff4
movl 0x48(%rbx), %esi
movq %r14, %rdi
callq 0xbff4
movl 0x4c(%rbx), %esi
movq %r14, %rdi
callq 0xbff4
movl 0x50(%rbx), %esi
movq %r14, %rdi
callq 0xbff4
movl 0x54(%rbx), %esi
movq %r14, %rdi
callq 0xbff4
movl 0x58(%rbx), %esi
movq %r14, %rdi
callq 0xbff4
movl 0x5c(%rbx), %esi
movq %r14, %rdi
callq 0xbff4
movq (%r14), %rdi
movzwl 0x60(%rbx), %r15d
movsbl %r15b, %esi
callq 0x2040
movq (%r14), %rdi
shrl $0x8, %r15d
movsbl %r15b, %esi
callq 0x2040
movq (%r14), %rdi
movzwl 0x62(%rbx), %r15d
movsbl %r15b, %esi
callq 0x2040
movq (%r14), %rdi
shrl $0x8, %r15d
movsbl %r15b, %esi
callq 0x2040
movl 0x64(%rbx), %esi
movq %r14, %rdi
callq 0xbff4
movl 0x68(%rbx), %esi
movq %r14, %rdi
callq 0xbff4
cmpl $0x2, 0x4(%rbx)
jl 0x907d
movl 0x6c(%rbx), %esi
leaq -0x20(%rbp), %rdi
callq 0xbff4
addq $0x8, %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq