Function at 0xffdf1c8
Capabilities:
Get common file path
Write file on windows

Disassembly:
push 0x5a4
push 0xffb2ad8
call fcn.0ffe120c
mov eax, dword [0xffebc20]
mov dword [ebp - 0x1c], eax
mov esi, dword [ebp + 8]
mov dword [ebp - 0x150], esi
xor edi, edi
mov dword [ebp - 0x154], edi
mov dword [ebp - 0x138], edi
mov dword [ebp - 0x148], edi
mov dword [ebp - 0x170], edi
mov ebx, esi
and ebx, 0xffff0000
shr esi, 0x10
push esi
call fcn.0ffdeea4
cmp eax, edi
jne 0xffdf668
push edi
call dword [sym.imp.GDI32.dll_CreateCompatibleDC]
mov dword [ebp - 0x13c], eax
cmp eax, edi
jne 0xffdf233
xor eax, eax
jmp 0xffdf668
push edi
lea eax, [ebp - 0x5b4]
push eax
push dword [ebp - 0x150]
call fcn.0ffb9cb4
mov dword [ebp - 0x160], eax
cmp dword [ebp - 0x5a0], edi
jne 0xffdf26a
mov eax, dword fs:[0x18]
mov eax, dword [eax + 0xc0]
test byte [eax + 0x22], 0x10
jne 0xffdf662
mov dword [ebp - 4], edi
lea eax, [ebp - 0x120]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
mov dword [ebp - 0x188], eax
cmp eax, edi
je 0xffdf659
cmp eax, 0x104
jae 0xffdf659
lea eax, [ebp - 0x120]
push eax
push edi
push 0xffb2124
push eax
call dword [sym.imp.KERNEL32.dll_GetTempFileNameA]
test eax, eax
je 0xffdf659
push edi
push 0x4000180
push 2
push edi
push 2
push 0xc0000000
lea eax, [ebp - 0x120]
push eax
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov dword [ebp - 0x138], eax
cmp eax, 0xffffffff
je 0xffdf659
mov word [ebp - 0x12c], si
lea eax, [ebp - 0x134]
push eax
push edi
lea eax, [ebp - 0x130]
push eax
push 0x39
call fcn.0ffb3820
mov word [ebp - 0x12c], si
cmp dword [ebp - 0x134], 0xffffffff
je 0xffdf659
cmp dword [ebp - 0x134], edi
je 0xffdf659
inc dword [ebp - 0x134]
mov eax, dword [ebp - 0x134]
mov dword [ebp - 0x178], eax
lea eax, [ebp - 0x158]
push eax
push edi
lea eax, [ebp - 0x130]
push eax
push 0x3a
call fcn.0ffb3820
cmp dword [ebp - 0x158], 4
je 0xffdf659
mov ecx, ebx
call fcn.0ffb37a5
mov dword [ebp - 0x16c], eax
lea eax, [ebp - 0x164]
push eax
push edi
push dword [ebp - 0x150]
call fcn.0ffb9d2a
mov dword [ebp - 0x168], eax
movzx eax, word [ebp - 0x150]
add eax, dword [ebp - 0x168]
cdq
push 4
pop ecx
idiv ecx
mov ebx, edx
mov dword [ebp - 0x180], ebx
cmp ebx, edi
je 0xffdf3c6
push edi
lea eax, [ebp - 0x14c]
push eax
push ebx
push dword [ebp - 0x16c]
push dword [ebp - 0x138]
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
je 0xffdf659
cmp dword [ebp - 0x14c], ebx
jne 0xffdf659
mov esi, dword [ebp - 0x160]
push esi
call fcn.0ffdeed1
test eax, eax
je 0xffdf49d
mov dword [ebp - 0x17c], esi
mov eax, dword [esi]
add eax, esi
mov dword [ebp - 0x184], eax
mov edx, dword [esi + 0x20]
cmp edx, edi
jne 0xffdf400
mov cx, word [esi + 0xe]
cmp cx, 8
ja 0xffdf400
xor edx, edx
inc edx
shl edx, cl
mov dword [ebp - 0x18c], edx
mov dword [esi + 0x24], edx
movzx ecx, word [esi + 0xe]
dec ecx
je 0xffdf678
sub ecx, 3
je 0xffdf489
sub ecx, 4
jne 0xffdf49d
push 8
pop ecx
mov esi, 0xffeba70
mov edi, eax
rep movsd dword es:[edi], dword [esi]
lea edi, [eax + 0x3e0]
push 8
pop ecx
mov esi, 0xffeba90
rep movsd dword es:[edi], dword [esi]
mov ecx, dword [0xffebab0]
mov dword [eax + 0x20], ecx
mov ecx, dword [0xffebab4]
mov dword [eax + 0x24], ecx
mov ecx, dword [0xffebab8]
mov dword [eax + 0x3d8], ecx
mov ecx, dword [0xffebabc]
mov dword [eax + 0x3dc], ecx
mov cl, 0xa
mov byte [ebp - 0x13d], cl
cmp cl, 0xf6
jae 0xffdf495
movzx edx, cl
lea esi, [eax + edx*4]
mov byte [esi], cl
mov byte [esi + 1], 0
mov byte [esi + 2], 0
mov byte [esi + 3], 0
inc cl
jmp 0xffdf466
push 0x10
pop ecx
mov esi, 0xffeba70
mov edi, eax
rep movsd dword es:[edi], dword [esi]
xor edi, edi
mov esi, dword [ebp - 0x160]
push edi
lea eax, [ebp - 0x14c]
push eax
push dword [ebp - 0x134]
push dword [ebp - 0x16c]
push dword [ebp - 0x138]
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
je 0xffdf659
mov eax, dword [ebp - 0x134]
cmp dword [ebp - 0x14c], eax
jne 0xffdf659
cmp eax, 0x10000
jae 0xffdf51b
push edi
push edi
lea eax, [ebx + 0x10000]
push eax
push dword [ebp - 0x138]
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
cmp eax, 0xffffffff
je 0xffdf659
push dword [ebp - 0x138]
call dword [sym.imp.KERNEL32.dll_SetEndOfFile]
test eax, eax
je 0xffdf659
mov eax, 0x10000
mov dword [ebp - 0x134], eax
push edi
add eax, ebx
push eax
push edi
push 0x8000004
push edi
push dword [ebp - 0x138]
call dword [sym.imp.KERNEL32.dll_CreateFileMappingA]
mov dword [ebp - 0x148], eax
cmp eax, edi
je 0xffdf659
movzx eax, word [ebp - 0x150]
add eax, ebx
add eax, dword [ebp - 0x168]
push eax
push dword [ebp - 0x148]
lea eax, [ebp - 0x144]
push eax
push edi
push esi
push dword [ebp - 0x13c]
call dword [sym.imp.GDI32.dll_CreateDIBSection]
mov dword [ebp - 0x154], eax
cmp eax, edi
je 0xffdf659
mov eax, dword [ebp - 0x134]
add eax, ebx
push eax
push edi
push edi
push 2
push dword [ebp - 0x148]
call dword [sym.imp.KERNEL32.dll_MapViewOfFile]
mov dword [ebp - 0x144], eax
cmp eax, edi
je 0xffdf659
add eax, ebx
mov dword [ebp - 0x144], eax
push dword [ebp - 0x154]
push dword [ebp - 0x13c]
call dword [sym.imp.GDI32.dll_SelectObject]
push 1
call dword [sym.imp.GDI32.dll_GdiSetBatchLimit]
mov eax, dword [ebp - 0x144]
mov dword [ebp - 0x174], eax
mov esi, dword [ebp - 0x150]
shr esi, 0x10
mov word [ebp - 0x12c], si
mov dword [ebp - 0x130], eax
mov word [ebp - 0x12a], 0x10
mov word [ebp - 0x128], 1
lea eax, [ebp - 0x15c]
push eax
push edi
lea eax, [ebp - 0x130]
push eax
push 0x3b
call fcn.0ffb3820
cmp dword [ebp - 0x15c], edi
je 0xffdf659
push esi
push dword [ebp - 0x158]
push dword [ebp - 0x178]
push dword [ebp - 0x154]
push dword [ebp - 0x174]
push dword [ebp - 0x144]
push ebx
push dword [ebp - 0x148]
push dword [ebp - 0x138]
push dword [ebp - 0x13c]
call fcn.0ffdedba
test eax, eax
je 0xffdf659
mov dword [ebp - 0x170], 1
or dword [ebp - 4], 0xffffffff
call fcn.0ffdf690
mov eax, dword [ebp - 0x13c]
mov ecx, dword [ebp - 0x1c]
call fcn.0ffe11f0
call fcn.0ffe1247
ret 4
mov ecx, dword [0xffeba70]
mov dword [eax], ecx
mov ecx, dword [0xffebaac]
mov dword [eax + 4], ecx
jmp 0xffdf49d