Function at 0x43c800
Capabilities:
Create directory
Get common file path
Resolve function by parsing pe exports
Write file on windows

Disassembly:
sub esp, 0x45c
mov eax, dword [0x4cb598]
xor eax, esp
mov dword [esp + 0x458], eax
push ebx
xor eax, eax
push ebp
push esi
push edi
push 0x103
xor ebp, ebp
mov dword [esp + 0x35], eax
mov dword [esp + 0x39], eax
mov dword [esp + 0x3d], eax
mov dword [esp + 0x41], eax
mov dword [esp + 0x45], eax
mov dword [esp + 0x49], eax
mov dword [esp + 0x4d], eax
mov dword [esp + 0x51], eax
mov dword [esp + 0x55], eax
mov byte [esp + 0x160], al
lea eax, [esp + 0x161]
push ebp
push eax
mov ebx, ecx
mov byte [esp + 0x3c], 0
call fcn.004762a0
push 0x103
lea ecx, [esp + 0x375]
push ebp
push ecx
mov byte [esp + 0x37c], 0
call fcn.004762a0
push 0x103
lea edx, [esp + 0x75]
push ebp
push edx
mov dword [esp + 0x3c], ebp
mov dword [esp + 0x34], ebp
mov dword [esp + 0x38], ebp
mov byte [esp + 0x7c], 0
call fcn.004762a0
push 0x103
lea eax, [esp + 0x289]
push ebp
push eax
mov byte [esp + 0x290], 0
call fcn.004762a0
add esp, 0x30
cmp dword [ebx + 0x78], ebp
jne 0x43ce50
push 1
push 0x105
call fcn.00479346
mov ebp, eax
add esp, 8
mov dword [esp + 0x1c], ebp
call fcn.00434a30
cmp byte [eax], 0
je 0x43c94b
mov ecx, eax
lea esi, [ecx + 1]
mov dl, byte [ecx]
add ecx, 1
test dl, dl
jne 0x43c8e8
sub ecx, esi
cmp byte [ecx + eax - 1], 0x5c
jne 0x43c90b
mov ecx, eax
lea esi, [ecx + 1]
nop
mov dl, byte [ecx]
add ecx, 1
test dl, dl
jne 0x43c900
jmp 0x43c939
mov edi, eax
add edi, 0xffffffff
mov cl, byte [edi + 1]
add edi, 1
test cl, cl
jne 0x43c910
mov cx, word [0x4a8c48]
mov word [edi], cx
mov ecx, eax
lea esi, [ecx + 1]
lea esp, [esp]
mov dl, byte [ecx]
add ecx, 1
test dl, dl
jne 0x43c930
sub ecx, esi
add ecx, 1
push ecx
push eax
push ebp
call fcn.00479390
add esp, 0xc
jmp 0x43c957
push ebp
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
xor ecx, ecx
lea esp, [esp]
mov al, byte [ecx + ebp]
cmp al, 0x41
jl 0x43c96f
cmp al, 0x5a
jg 0x43c96f
add byte [ecx + ebp], 0x20
mov eax, ebp
add ecx, 1
lea esi, [eax + 1]
mov dl, byte [eax]
add eax, 1
test dl, dl
jne 0x43c977
sub eax, esi
cmp ecx, eax
jbe 0x43c960
lea edx, [esp + 0x20]
push edx
call dword [sym.imp.ole32.dll_CoCreateGuid]
push 0
push 0x25
lea eax, [esp + 0x38]
push eax
lea ecx, [esp + 0x2c]
push ecx
call fcn.00436120
lea edx, [esp + 0x40]
push edx
lea eax, [esp + 0x30]
push eax
call fcn.0043a730
mov ebp, dword [esp + 0x34]
add esp, 0x18
push 0
push ebp
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
test eax, eax
mov edi, dword [sym.imp.KERNEL32.dll_GetLastError]
jne 0x43c9da
call edi
cmp eax, 0xb7
jne 0x43ce49
call edi
cmp eax, 5
je 0x43ce49
mov eax, ebp
lea edx, [eax + 1]
lea ebx, [ebx]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x43c9f0
sub eax, edx
add eax, 1
push 1
push eax
call fcn.00479346
add esp, 8
test eax, eax
mov dword [ebx + 0x78], eax
je 0x43ce49
mov ecx, ebp
mov edx, eax
mov al, byte [ecx]
mov byte [edx], al
add ecx, 1
add edx, 1
test al, al
jne 0x43ca18
lea edx, [esp + 0x260]
mov eax, ebp
sub edx, ebp
mov cl, byte [eax]
mov byte [edx + eax], cl
add eax, 1
test cl, cl
jne 0x43ca31
lea eax, [esp + 0x260]
add eax, 0xffffffff
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x43ca47
mov ecx, dword [str.platform.dsc]
mov edx, dword [0x4b01a8]
mov dword [eax], ecx
mov ecx, dword [0x4b01ac]
mov dword [eax + 4], edx
mov dx, word [0x4b01b0]
mov dword [eax + 8], ecx
mov word [eax + 0xc], dx
lea eax, [esp + 0x14]
push str._Defines__nOUTPUT_DIRECTORY__Build_FVLIB_nSUPPORTED_ARCHITECTURES__IA32__X64_nPLATFORM_NAME__FVLIB
push eax
call fcn.0043a730
lea ecx, [esp + 0x268]
push 0x4b013c
push ecx
call fcn.0047a909
mov ebx, dword [esp + 0x24]
mov esi, eax
mov eax, ebx
add esp, 0x10
lea edx, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x43caa5
push esi
sub eax, edx
push eax
push 1
push ebx
call fcn.00479f37
push esi
call fcn.00478828
lea edx, [esp + 0x378]
add esp, 0x14
mov eax, ebp
sub edx, ebp
mov edi, edi
mov cl, byte [eax]
mov byte [edx + eax], cl
add eax, 1
test cl, cl
jne 0x43cad0
lea eax, [esp + 0x364]
add eax, 0xffffffff
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x43cae6
mov edx, dword [str._tools_def.txt]
mov ecx, dword [0x4b0130]
mov dword [eax], edx
mov edx, dword [0x4b0134]
mov dword [eax + 4], ecx
mov cx, word [0x4b0138]
mov dword [eax + 8], edx
mov dl, byte [0x4b013a]
mov word [eax + 0xc], cx
mov byte [eax + 0xe], dl
lea eax, [esp + 0x10]
push str._n_LzmaCompress_tool_definitions_n_n___LZMA_PATH___________LzmaCompress_n___LZMA_GUID___________EE4E5898_3914_4259_9D6E_DC7BD79403CF_n_n_n_LzmaF86Compress_tool_definitions_with_converter_for_x86_code._n
push eax
call fcn.0043a730
lea ecx, [esp + 0x18]
push str._It_can_improve_the_compression_ratio_if_the_input_file_is_IA32_or_X64_PE_image._n_Notes:_If_X64_PE_image_is_built_based_on_GCC44__it_may_not_get_the_better_compression._n_n___LZMAF86_PATH________LzmaF86Compress_n
push ecx
call fcn.0043a730
lea edx, [esp + 0x20]
push str.___LZMAF86_GUID________D42AE6BD_1352_4bfb_909A_CA72A6EAE889_n_n_n_TianoCompress_tool_definitions_n_n___TIANO_PATH__________TianoCompress_n___TIANO_GUID__________A31280AD_481E_41B6_95E8_127F4C984779_n_n
push edx
call fcn.0043a730
lea eax, [esp + 0x28]
push str._n_CC_FLAGS_n_nRELEASE_FWLIB_IA32_CC_FLAGS_______nRELEASE_FWLIB_X64_CC_FLAGS________n_n
push eax
call fcn.0043a730
lea ecx, [esp + 0x30]
push str._n_Dummy_Compress_n_n___DUMMYCOMPRESS1_PATH___________DummyCompress_n
push ecx
call fcn.0043a730
lea edx, [esp + 0x38]
push str.___DUMMYCOMPRESS1_GUID___________0EECB4A5_7B9F_4707_81D7_9C045E98CA95_n_n___DUMMYCOMPRESS2_PATH___________DummyCompress_n___DUMMYCOMPRESS2_GUID___________EE257F8F_E710_4181_9B01_C06698454A16_n_n
push edx
call fcn.0043a730
lea eax, [esp + 0x394]
push 0x4b013c
push eax
call fcn.0047a909
mov ebx, dword [esp + 0x48]
mov esi, eax
mov eax, ebx
add esp, 0x38
lea edx, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x43cb98
push esi
sub eax, edx
push eax
push 1
push ebx
call fcn.00479f37
push esi
call fcn.00478828
lea edx, [esp + 0x170]
add esp, 0x14
mov eax, ebp
sub edx, ebp
mov cl, byte [eax]
mov byte [edx + eax], cl
add eax, 1
test cl, cl
jne 0x43cbc1
lea eax, [esp + 0x15c]
add eax, 0xffffffff
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x43cbd7
mov ecx, dword [str.Conf]
mov dx, word [0x4afc18]
mov esi, dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
mov dword [eax], ecx
mov word [eax + 4], dx
push 0
lea eax, [esp + 0x160]
push eax
call esi
test eax, eax
jne 0x43cc17
call edi
cmp eax, 0xb7
jne 0x43cca7
call edi
cmp eax, 5
je 0x43cca7
lea eax, [esp + 0x15c]
add eax, 0xffffffff
lea esp, [esp]
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x43cc30
mov ecx, dword [str._target.txt]
mov edx, dword [0x4afc0c]
mov dword [eax], ecx
mov ecx, dword [0x4afc10]
mov dword [eax + 4], edx
lea edx, [esp + 0x18]
push str.TOOL_CHAIN_CONF__tools_def.txt
push edx
mov dword [eax + 8], ecx
call fcn.0043a730
lea eax, [esp + 0x164]
push 0x4b013c
push eax
call fcn.0047a909
mov ebx, dword [esp + 0x28]
mov esi, eax
mov eax, ebx
add esp, 0x10
lea edx, [eax + 1]
mov cl, byte [eax]
add eax, 1
test cl, cl
jne 0x43cc83
push esi
sub eax, edx
push eax
push 1
push ebx
call fcn.00479f37
push esi
call fcn.00478828
mov esi, dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
add esp, 0x14
lea edx, [esp + 0x58]
mov eax, ebp
sub edx, ebp
nop
mov cl, byte [eax]
mov byte [edx + eax], cl
add eax, 1
test cl, cl
jne 0x43ccb0
lea eax, [esp + 0x58]
add eax, 0xffffffff
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x43ccc3
mov ecx, dword [str.Build]
mov dx, word [0x4afbe4]
mov dword [eax], ecx
mov cl, byte [0x4afbe6]
mov word [eax + 4], dx
push 0
lea edx, [esp + 0x5c]
push edx
mov byte [eax + 6], cl
call esi
test eax, eax
jne 0x43cd03
call edi
cmp eax, 0xb7
jne 0x43ce49
call edi
cmp eax, 5
je 0x43ce49
lea eax, [esp + 0x58]
add eax, 0xffffffff
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x43cd15
mov ecx, dword [str.FVLIB]
mov dx, word [0x4afbdc]
mov dword [eax], ecx
mov cl, byte [0x4afbde]
mov word [eax + 4], dx
push 0
lea edx, [esp + 0x5c]
push edx
mov byte [eax + 6], cl
call esi
test eax, eax
jne 0x43cd55
call edi
cmp eax, 0xb7
jne 0x43ce49
call edi
cmp eax, 5
je 0x43ce49
lea eax, [esp + 0x58]
add eax, 0xffffffff
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x43cd67
mov ecx, dword [str.RELEASE_FWLIB]
mov edx, dword [0x4afbcc]
mov dword [eax], ecx
mov ecx, dword [0x4afbd0]
mov dword [eax + 4], edx
mov dx, word [0x4afbd4]
mov dword [eax + 8], ecx
mov cl, byte [0x4afbd6]
mov word [eax + 0xc], dx
push 0
lea edx, [esp + 0x5c]
push edx
mov byte [eax + 0xe], cl
call esi
test eax, eax
jne 0x43cdb9
call edi
cmp eax, 0xb7
jne 0x43ce49
call edi
cmp eax, 5
je 0x43ce49
lea edi, [esp + 0x58]
add edi, 0xffffffff
jmp 0x43cdd0
mov al, byte [edi + 1]
add edi, 1
test al, al
jne 0x43cdd0
mov eax, dword [0x4afbc4]
push 0
lea ecx, [esp + 0x5c]
mov dword [edi], eax
mov edi, dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
push ecx
call edi
test eax, eax
mov esi, dword [sym.imp.KERNEL32.dll_GetLastError]
jne 0x43ce03
call esi
cmp eax, 0xb7
jne 0x43ce49
call esi
cmp eax, 5
je 0x43ce49
lea eax, [esp + 0x58]
add eax, 0xffffffff
mov cl, byte [eax + 1]
add eax, 1
test cl, cl
jne 0x43ce11
mov edx, dword [str.Ffs]
mov cl, byte [0x4afbc0]
mov dword [eax], edx
push 0
lea edx, [esp + 0x5c]
push edx
mov byte [eax + 4], cl
call edi
test eax, eax
jne 0x43ce42
call esi
cmp eax, 0xb7
jne 0x43ce49
call esi
cmp eax, 5
jne 0x43ce50
mov eax, 1
jmp 0x43ce79
push ebp
call fcn.00478435
mov eax, dword [esp + 0x18]
push eax
call fcn.00478435
mov ecx, dword [esp + 0x18]
push ecx
call fcn.00478435
mov edx, dword [esp + 0x24]
push edx
call fcn.00478435
add esp, 0x10
xor eax, eax
mov ecx, dword [esp + 0x468]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.00475cba
add esp, 0x45c
ret