Function at 0x10029aa0
Capabilities:
Write file on windows

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x10056d7e
mov eax, dword fs:[0]
push eax
sub esp, 0x504
mov eax, dword [0x1006c740]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
cmp dword [0x1006f668], 0
mov eax, dword [ebp + 0x10]
mov ebx, dword [ebp + 8]
mov dword [ebp - 0x4a0], eax
jne 0x10029af5
mov ecx, 0x10060bb4
call fcn.1002d5f0
mov eax, dword [ebp - 0x4a0]
mov dword [edi], 0
cmp eax, 3
jne 0x10029b58
cmp byte [0x1009c770], 0
je 0x10029b14
push 0x1009c758
call dword [sym.imp.KERNEL32.dll_EnterCriticalSection]
cmp byte [0x1006d688], 0
je 0x10029b34
mov dword [edi + 4], 0x10095130
mov byte [0x1006d688], 0
mov byte [0x1009c751], 1
jmp 0x10029b42
mov dword [edi + 4], 0x1007ef60
mov byte [0x10086581], 0
cmp byte [0x1009c770], 0
je 0x10029ba1
push 0x1009c758
call dword [0x10059108]
jmp 0x10029ba1
push 0x7628
call fcn.10035cb1
mov esi, eax
add esp, 4
mov dword [ebp - 0x4a4], esi
mov dword [ebp - 4], 0
test esi, esi
je 0x10029b8c
sub esp, 0xc
lea eax, [esi + 4]
lea ecx, [esi + 0x7538]
push eax
call fcn.100280b0
jmp 0x10029b8e
xor esi, esi
mov dword [ebp - 4], 0xffffffff
mov dword [edi], esi
mov dword [edi + 4], esi
mov byte [esi + 0x7621], 0
mov ecx, dword [edi + 4]
mov eax, dword [ecx + 0x7538]
mov eax, dword [eax + 4]
mov byte [eax + ecx + 0x7578], 0x30
call fcn.1003a5f1
mov ecx, dword [edi + 4]
mov eax, dword [eax]
mov dword [ecx], eax
mov eax, dword [edi + 4]
mov ecx, dword [ebp - 0x4a0]
mov byte [eax + 0x75d0], cl
mov eax, dword [edi + 4]
mov ecx, dword [ebp + 0xc]
mov dword [eax + 0x75d4], ecx
mov eax, dword [edi + 4]
mov dword [eax + 0x75d8], 0x1002ab80
mov eax, dword [edi + 4]
mov dword [eax + 0x75dc], 0
mov eax, dword [edi + 4]
mov dword [eax + 0x75dc], 0
call fcn.1002d510
mov ecx, eax
call fcn.10053e3f
mulsd xmm0, qword [0x10064350]
movsd qword [ebp - 0x4a8], xmm0
call fcn.10053c9f
mov ecx, dword [edi + 4]
mov dword [ecx + 0x75e0], eax
mov dword [ecx + 0x75e4], edx
mov ecx, dword [edi + 4]
lea eax, [ecx + 0x75e0]
push eax
lea eax, [ecx + 0x75e8]
push eax
call fcn.1003d351
mov esi, dword [edi + 4]
add esp, 8
mov edx, dword [esi + 0x75e4]
mov ecx, dword [esi + 0x75e0]
call fcn.10053e3f
movsd xmm1, qword [ebp - 0x4a8]
subsd xmm1, xmm0
movdqu xmm0, xmmword [esi + 0x75e8]
push 0x2f
push ebx
movdqu xmmword [0x1009c97c], xmm0
movdqu xmm0, xmmword [esi + 0x75f8]
mulsd xmm1, qword [0x10064368]
movdqu xmmword [0x1009c98c], xmm0
mov eax, dword [esi + 0x7608]
mov dword [0x1009c99c], eax
mov eax, dword [edi + 4]
cvttsd2si ecx, xmm1
mov dword [eax + 0x7610], 0
mov eax, dword [edi + 4]
mov dword [ebp - 0x4ac], ecx
mov dword [0x1009c9a0], ecx
mov dword [eax + 0x7614], 0
call fcn.1003e540
add esp, 8
test eax, eax
jne 0x10029ce9
push 0x5c
push ebx
call fcn.1003e540
add esp, 8
mov ecx, ebx
test eax, eax
je 0x10029cec
lea ecx, [eax + 1]
mov eax, dword [edi + 4]
push 0x104
push 0
mov dword [eax + 0x7618], ecx
mov eax, dword [edi + 4]
mov dword [eax + 0x761c], ebx
mov eax, dword [edi + 4]
mov byte [eax + 0x7620], 0
lea eax, [ebp - 0x217]
push eax
mov byte [ebp - 0x218], 0
call fcn.10037cb0
add esp, 0xc
mov byte [ebp - 0x49c], 0
xor eax, eax
mov word [ebp - 0x49b], ax
mov byte [ebp - 0x418], al
push 0xff
push eax
lea eax, [ebp - 0x417]
push eax
call fcn.10037cb0
add esp, 0xc
mov byte [ebp - 0x110], 0
lea eax, [ebp - 0x10f]
push 0xff
push 0
push eax
call fcn.10037cb0
add esp, 0xc
mov byte [ebp - 0x318], 0
lea eax, [ebp - 0x317]
push 0xff
push 0
push eax
call fcn.10037cb0
add esp, 0xc
lea eax, [ebp - 0x218]
push 0x104
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
test eax, eax
jne 0x10029dc2
call dword [0x10059048]
mov esi, eax
call fcn.10036e52
add eax, 0x40
push eax
push 1
push esi
push str.Failed_to_get_executable_module_name___d__n
call fcn.10037858
jmp 0x10029e07
lea eax, [ebp - 0x318]
push eax
lea eax, [ebp - 0x110]
push eax
lea eax, [ebp - 0x418]
push eax
lea eax, [ebp - 0x49c]
push eax
lea eax, [ebp - 0x218]
push eax
call fcn.10040342
add esp, 0x14
lea eax, [ebp - 0x318]
push eax
lea eax, [ebp - 0x110]
push eax
push 0x10063808
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
mov ebx, dword [ebp + 0xc]
add esp, 0x10
cmp byte [0x1007ef12], 0
je 0x1002a0aa
cmp ebx, 0xffffffff
je 0x1002a0aa
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov esi, dword [edi + 4]
push 0
mov dword [ebp - 0x4a4], eax
lea eax, [ebp - 0x4d0]
push 2
push eax
call fcn.10035815
mov ebx, eax
lea ecx, [esi + 0x7538]
mov eax, dword [ebp - 0x4a0]
add esp, 0xc
mov edx, dword [eax*4 + 0x10063c04]
mov dl, byte [edx]
call fcn.1002cb80
mov esi, eax
test esi, esi
jne 0x10029e6b
xor ecx, ecx
jmp 0x10029e72
mov eax, dword [esi]
mov ecx, dword [eax + 4]
add ecx, esi
push dword [ebx + 0xc]
mov eax, dword [ebx]
push dword [ebx + 8]
push ecx
call eax
add esp, 0xc
lea eax, [ebp - 0x4e0]
push 0
push 2
push eax
call fcn.10035815
mov ecx, dword [edi + 4]
add esp, 0xc
mov ebx, eax
mov ecx, dword [ecx + 0x75f8]
inc ecx
push ecx
mov ecx, esi
call fcn.1002bd80
mov esi, eax
test esi, esi
jne 0x10029eb1
xor ecx, ecx
jmp 0x10029eb8
mov eax, dword [esi]
mov ecx, dword [eax + 4]
add ecx, esi
push dword [ebx + 0xc]
mov eax, dword [ebx]
push dword [ebx + 8]
push ecx
call eax
add esp, 0xc
lea eax, [ebp - 0x500]
push 0
push 2
push eax
call fcn.10035815
mov ecx, dword [edi + 4]
add esp, 0xc
mov ebx, eax
push dword [ecx + 0x75f4]
mov ecx, esi
call fcn.1002bd80
mov dl, 0x20
mov ecx, eax
call fcn.1002cb80
mov esi, eax
test esi, esi
jne 0x10029efe
xor ecx, ecx
jmp 0x10029f05
mov eax, dword [esi]
mov ecx, dword [eax + 4]
add ecx, esi
push dword [ebx + 0xc]
mov eax, dword [ebx]
push dword [ebx + 8]
push ecx
call eax
add esp, 0xc
lea eax, [ebp - 0x4c0]
push 0
push 2
push eax
call fcn.10035815
mov ecx, dword [edi + 4]
add esp, 0xc
mov ebx, eax
push dword [ecx + 0x75f0]
mov ecx, esi
call fcn.1002bd80
mov dl, 0x3a
mov ecx, eax
call fcn.1002cb80
mov esi, eax
test esi, esi
jne 0x10029f4b
xor ecx, ecx
jmp 0x10029f52
mov eax, dword [esi]
mov ecx, dword [eax + 4]
add ecx, esi
push dword [ebx + 0xc]
mov eax, dword [ebx]
push dword [ebx + 8]
push ecx
call eax
add esp, 0xc
lea eax, [ebp - 0x4f0]
push 0
push 2
push eax
call fcn.10035815
mov ecx, dword [edi + 4]
add esp, 0xc
mov ebx, eax
push dword [ecx + 0x75ec]
mov ecx, esi
call fcn.1002bd80
mov dl, 0x3a
mov ecx, eax
call fcn.1002cb80
mov esi, eax
test esi, esi
jne 0x10029f98
xor ecx, ecx
jmp 0x10029f9f
mov eax, dword [esi]
mov ecx, dword [eax + 4]
add ecx, esi
push dword [ebx + 0xc]
mov eax, dword [ebx]
push dword [ebx + 8]
push ecx
call eax
add esp, 0xc
lea eax, [ebp - 0x510]
push 0
push 6
push eax
call fcn.10035815
mov ecx, dword [edi + 4]
add esp, 0xc
mov ebx, eax
push dword [ecx + 0x75e8]
mov ecx, esi
call fcn.1002bd80
mov edx, 0x10060a68
mov ecx, eax
call fcn.1000a1d0
mov esi, eax
test esi, esi
jne 0x10029fe8
xor ecx, ecx
jmp 0x10029fef
mov eax, dword [esi]
mov ecx, dword [eax + 4]
add ecx, esi
push dword [ebx + 0xc]
mov eax, dword [ebx]
push dword [ebx + 8]
push ecx
call eax
add esp, 0xc
call fcn.1003d62b
push eax
push ecx
push dword [ebp - 0x4ac]
mov ecx, esi
call fcn.1002bd80
mov dl, 0x20
mov ecx, eax
call fcn.1002cb80
lea edx, [ebp - 0x110]
mov ecx, eax
call fcn.1000a1d0
mov dl, 0x20
mov ecx, eax
call fcn.1002cb80
add esp, 4
mov ecx, eax
call fcn.10008600
push dword [ebp - 0x4a4]
mov dl, 0x20
mov ecx, dword [eax]
mov ecx, dword [ecx + 4]
push ecx
mov byte [ecx + eax + 0x40], 0x30
mov ecx, eax
call fcn.1002cb80
add esp, 4
mov ecx, eax
call fcn.10008600
mov dl, 0x20
mov ecx, dword [eax]
mov ecx, dword [ecx + 4]
mov byte [ecx + eax + 0x40], 0x30
mov esi, dword [edi + 4]
push dword [esi + 0x75d4]
push ecx
mov ecx, eax
call fcn.1002cb80
mov edx, dword [esi + 0x7618]
mov ecx, eax
call fcn.1000a1d0
mov dl, 0x3a
mov ecx, eax
call fcn.1002cb80
add esp, 4
mov ecx, eax
call fcn.1002bd80
mov edx, 0x10063810
mov ecx, eax
call fcn.1000a1d0
mov ebx, dword [ebp + 0xc]
mov edx, dword [edi + 4]
mov eax, dword [edx + 0x755c]
mov ecx, dword [edx + 0x754c]
mov eax, dword [eax]
sub eax, dword [ecx]
mov dword [edx + 0x760c], eax
cmp dword [0x1007ef24], 0
je 0x1002a0ef
mov eax, dword [edi + 4]
push ebx
push dword [eax + 0x7618]
lea eax, [ebp - 0x498]
push str._s:_d
push 0x80
push eax
call fcn.1002d930
add esp, 0x14
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.100359a8
mov esp, ebp
pop ebp
ret 0x10