Function at 0x3c89e2
Capabilities:
Write file on windows

Disassembly:
push 0
lea ecx, [ebp - 0x38]
call fcn.003c8cbf
mov dword [ebp - 4], 1
test esi, esi
jl 0x3c1a47
push dword [ebp - 0x34]
mov ecx, edi
call fcn.003c174b
mov esi, eax
test esi, esi
jl 0x3c1a47
push dword [ebp + 0xc]
mov ecx, edi
call fcn.003c1b46
mov esi, eax
push dword [ebp - 0x34]
mov dword [ebp - 0x38], 0x3c1660
call dword [sym.imp.OLEAUT32.dll_SysStringLen]
or dword [ebp - 4], 0xffffffff
xor ebx, ebx
inc ebx
test esi, esi
jl 0x3c1b1f
xor eax, eax
cmp dword [edi + 0x3c], 2
je 0x3cf6cc
test esi, esi
jl 0x3c1b1f
push dword [edi + eax*4 + 0x34]
mov ecx, edi
push dword [0x3db46c]
call fcn.003c16c1
mov dword [ebp - 0x2c], eax
test eax, eax
je 0x3c97fd
push ebx
push eax
mov ecx, edi
call fcn.003c1570
mov esi, eax
test esi, esi
jl 0x3c1b02
push ebx
push dword [0x3db490]
mov ecx, edi
call fcn.003c1570
mov esi, eax
test esi, esi
jl 0x3c1b02
push ebx
push dword [0x3db444]
mov ecx, edi
call fcn.003c1570
mov esi, eax
test esi, esi
jl 0x3c1b02
push ebx
push dword [ebp - 0x2c]
mov ecx, edi
call fcn.003c1570
mov esi, eax
test esi, esi
jl 0x3c1b02
push ebx
push dword [0x3db498]
mov ecx, edi
call fcn.003c1570
mov esi, eax
test esi, esi
jl 0x3c1b02
push ebx
push dword [0x3db444]
mov ecx, edi
call fcn.003c1570
mov esi, eax
push dword [ebp - 0x2c]
call fcn.003c13c0
pop ecx
test esi, esi
jl 0x3c1b1f
push ebx
push dword [0x3db444]
mov ecx, edi
call fcn.003c1570
mov esi, eax
xor eax, eax
cmp esi, eax
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x34], eax
jl 0x3c982f
cmp dword [ebp + 0x10], 0xffffffff
je 0x3c920d
mov dword [ebp - 0x20], eax
jmp 0x3c1c83
test esi, esi
jl 0x3c1c2c
push 1
push dword [0x3db444]
mov ecx, edi
call fcn.003c1570
mov esi, eax
cmp dword [ebp + 0xc], 0
je 0x3c1c4b
test esi, esi
jl 0x3c1c4b
push 0xbb8
push 0xa
push 0x64
push 0x3e8
push 3
call sub.wbemcomn.dll_long_int___stdcall_Throttle_unsigned_long_int__unsigned_long_int__unsigned_long_int__unsigned_long_int__unsigned_long_int_
lea ecx, [ebp - 0x2c]
call fcn.003c13f8
inc dword [ebp - 0x1c]
mov ebx, dword [ebp - 0x2c]
mov eax, dword [ebp - 0x20]
imul eax, eax, 0x18
cmp ebx, dword [eax + edi + 0x10]
je 0x3c9204
test esi, esi
jl 0x3c9204
mov eax, dword [ebx + 0x10]
add eax, 8
mov eax, dword [eax + 8]
and dword [ebp - 0x14], 0
mov dword [ebp - 0x30], eax
jmp 0x3c1cae
mov eax, dword [ebp - 0x20]
cmp eax, dword [edi + 0x30]
jae 0x3c920d
test esi, esi
jl 0x3c982f
imul eax, eax, 0x18
add eax, edi
cmp dword [eax + 0x14], 0
jne 0x3c1ef7
inc dword [ebp - 0x20]
xor ebx, ebx
inc ebx
jmp 0x3c1c83
mov eax, dword [ebp - 0x14]
cmp eax, dword [edi + 0x3c]
jae 0x3c1c17
test esi, esi
jl 0x3c1c2c
cmp eax, dword [ebp - 0x30]
jae 0x3c1c17
mov eax, dword [ebx + 0x10]
push dword [ebp - 0x1c]
mov eax, dword [eax + 4]
push eax
mov ecx, edi
call fcn.003c14ef
mov esi, eax
test esi, esi
je 0x3c9807
mov eax, dword [ebp - 0x14]
push dword [edi + eax*4 + 0x34]
mov ecx, edi
push esi
call fcn.003c16c1
push esi
mov dword [ebp - 0x24], eax
call fcn.003c13c0
cmp dword [ebp - 0x24], 0
pop ecx
je 0x3c9807
push 1
push dword [ebp - 0x24]
mov ecx, edi
call fcn.003c1570
mov esi, eax
test esi, esi
jl 0x3c1e03
push 1
push dword [0x3db44c]
mov ecx, edi
call fcn.003c1570
mov esi, eax
test esi, esi
jl 0x3c1e03
push 1
push dword [0x3db448]
mov ecx, edi
call fcn.003c1570
mov esi, eax
test esi, esi
jl 0x3c1e03
mov eax, dword [ebx + 0x10]
mov ecx, dword [ebp - 0x14]
add eax, 8
mov eax, dword [eax + 4]
shl ecx, 2
add eax, ecx
mov eax, dword [eax]
mov eax, dword [eax + 4]
push 1
push eax
mov ecx, edi
call fcn.003c1570
mov esi, eax
test esi, esi
jl 0x3c1e03
push 1
push dword [0x3db444]
mov ecx, edi
call fcn.003c1570
mov esi, eax
test esi, esi
jl 0x3c1e03
push 1
push dword [ebp - 0x24]
mov ecx, edi
call fcn.003c1570
mov esi, eax
test esi, esi
jl 0x3c1e03
push 1
push dword [0x3db450]
mov ecx, edi
call fcn.003c1570
mov esi, eax
test esi, esi
jl 0x3c1e03
push 1
push dword [0x3db448]
mov ecx, edi
call fcn.003c1570
mov esi, eax
test esi, esi
jl 0x3c1e03
mov eax, dword [ebx + 0x10]
mov ecx, dword [ebp - 0x14]
add eax, 8
mov eax, dword [eax + 4]
shl ecx, 2
add eax, ecx
mov eax, dword [eax]
mov eax, dword [eax + 8]
push 1
push eax
mov ecx, edi
call fcn.003c1570
mov esi, eax
test esi, esi
jl 0x3c1e03
push 1
push dword [0x3db444]
mov ecx, edi
call fcn.003c1570
mov esi, eax
push dword [ebp - 0x24]
call fcn.003c13c0
pop ecx
inc dword [ebp - 0x14]
jmp 0x3c1cae
mov eax, dword [eax + 0x10]
mov ebx, dword [eax]
mov dword [ebp - 4], 5
mov dword [ebp - 0x2c], ebx
jmp 0x3c1c59
push 0x2c
mov eax, 0x3d6d28
call fcn.003c1350
mov edi, ecx
mov dword [ebp - 0x28], edi
mov eax, dword [ebp + 8]
xor ecx, ecx
mov esi, 0x8000ffff
cmp eax, ecx
je 0x3c97d4
cmp word [eax], cx
je 0x3c97d4
cmp dword [ebp + 0x10], ecx
jne 0x3c8a1c
cmp dword [edi + 0x30], ecx
je 0x3c97d4
push dword [ebp + 8]
and dword [ebp - 4], 0
mov dword [ebp - 0x18], ecx
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov ebx, eax
add ebx, 0xa
xor ecx, ecx
push 2
pop edx
mov eax, ebx
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.003c13e0
pop ecx
mov dword [ebp - 0x18], eax
test eax, eax
je 0x3cf687
push dword [ebp + 8]
push ebx
push eax
call fcn.003c21cb
mov esi, eax
test esi, esi
jl 0x3c1a57
push 0x3c8ca8
push ebx
push dword [ebp - 0x18]
call fcn.003c2436
mov esi, eax
test esi, esi
jl 0x3c1a57
push dword [ebp - 0x18]
mov ecx, edi
call fcn.003c7f3e
mov esi, eax
test esi, esi
jl 0x3c1a57
and dword [ebp - 0x24], 0
mov ebx, 0x3c8ca4
push ebx
mov esi, 0x80004005
call dword [sym.imp.KERNEL32.dll_lstrlenA]
push 0
lea ecx, [ebp - 0x24]
push ecx
mov dword [ebp - 0x2c], eax
push dword [ebp - 0x2c]
mov eax, dword [edi + 0x44]
push ebx
push eax
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
je 0x3c1a57
mov eax, dword [ebp - 0x2c]
cmp eax, dword [ebp - 0x24]
jne 0x3c1a57
xor esi, esi
mov dword [ebp - 0x38], 0x3c1660
mov dword [ebp - 0x34], esi
lea ecx, [ebp - 0x38]
mov byte [ebp - 4], 1
call fcn.003c8742
push esi
lea ecx, [ebp - 0x38]
call fcn.003c83a7
push 0x3c7ec8
lea ecx, [ebp - 0x38]
call fcn.003c83a7
push esi
lea ecx, [ebp - 0x38]
call fcn.003c83a7
push 0x3c7eac
lea ecx, [ebp - 0x38]
call fcn.003c83a7
push dword [ebp + 8]
lea ecx, [ebp - 0x38]
call fcn.003c83a7
push esi
lea ecx, [ebp - 0x38]
call fcn.003c83a7
push 0x3c7e98
lea ecx, [ebp - 0x38]
call fcn.003c83a7
push esi
lea ecx, [ebp - 0x38]
call fcn.003c83a7
push 0x3c8c18
lea ecx, [ebp - 0x38]
call fcn.003c83a7
push esi
lea ecx, [ebp - 0x38]
call fcn.003c83a7
lea ecx, [ebp - 0x38]
call fcn.003c86ef
push esi
lea ecx, [ebp - 0x38]
mov byte [ebp - 4], 2
call fcn.003c8cbf
push dword [0x3db4a4]
lea ecx, [ebp - 0x38]
call fcn.003c8cbf
push dword [0x3db49c]
lea ecx, [ebp - 0x38]
call fcn.003c8cbf
push dword [ebp + 8]
lea ecx, [ebp - 0x38]
call fcn.003c8cbf
push esi
lea ecx, [ebp - 0x38]
call fcn.003c8cbf
push dword [0x3db4a0]
lea ecx, [ebp - 0x38]
call fcn.003c8cbf
push dword [ebp + 8]
lea ecx, [ebp - 0x38]
call fcn.003c8cbf
push 0x3c88c4
lea ecx, [ebp - 0x38]
call fcn.003c8cbf
push esi
lea ecx, [ebp - 0x38]
call fcn.003c8cbf
push esi
lea ecx, [ebp - 0x38]
call fcn.003c8cbf
push dword [0x3db4ac]
lea ecx, [ebp - 0x38]
call fcn.003c8cbf
xor ebx, ebx
cmp ebx, dword [edi + 0x3c]
jae 0x3c1a16
push dword [edi + ebx*4 + 0x34]
mov ecx, edi
call fcn.003c88ef
mov dword [ebp - 0x2c], eax
test eax, eax
je 0x3c97f3
push eax
lea ecx, [ebp - 0x38]
call fcn.003c8cbf
push dword [ebp - 0x2c]
call fcn.003c13c0
pop ecx
inc ebx
jmp 0x3c8be4
cmp dword [ebp + 0xc], 0
je 0x3c8e21
test esi, esi
jl 0x3c8e21
push 0xbb8
push 0xa
push 0x64
push 0x3e8
push 3
call sub.wbemcomn.dll_long_int___stdcall_Throttle_unsigned_long_int__unsigned_long_int__unsigned_long_int__unsigned_long_int__unsigned_long_int_
lea ecx, [ebp - 0x20]
call fcn.003c13f8
inc dword [ebp - 0x1c]
mov eax, dword [ebp - 0x24]
mov ecx, dword [ebp - 0x20]
imul eax, eax, 0x18
cmp ecx, dword [eax + edi + 0x10]
je 0x3c97ea
test esi, esi
jl 0x3c97ea
and dword [ebp + 0x10], 0
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x10]
mov ecx, dword [ebp + 0x10]
cmp ecx, dword [eax + 0x1c]
jae 0x3c8e02
test esi, esi
jl 0x3c8e02
mov eax, dword [eax + 0x18]
shl ecx, 2
mov eax, dword [ecx + eax]
cmp dword [eax + 0x10], 0
je 0x3c902c
mov eax, dword [eax + 0x14]
and dword [ebp - 0x14], 0
mov dword [ebp - 0x34], eax
mov eax, dword [ebp - 0x14]
cmp eax, dword [edi + 0x3c]
jae 0x3c9017
test esi, esi
jl 0x3c902c
cmp eax, dword [ebp - 0x34]
jae 0x3c9017
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x10]
mov ecx, dword [ebp + 0x10]
push dword [ebp - 0x1c]
add eax, 0x14
mov eax, dword [eax + 4]
shl ecx, 2
add eax, ecx
mov eax, dword [eax]
mov eax, dword [eax + 4]
push eax
mov ecx, edi
call fcn.003c14ef
mov esi, eax
test esi, esi
je 0x3c9825
mov eax, dword [ebp - 0x14]
push dword [edi + eax*4 + 0x34]
mov ecx, edi
push esi
call fcn.003c16c1
push esi
mov dword [ebp - 0x2c], eax
call fcn.003c13c0
cmp dword [ebp - 0x2c], 0
pop ecx
je 0x3c9825
push 1
push dword [ebp - 0x2c]
mov ecx, edi
call fcn.003c1570
mov esi, eax
test esi, esi
jl 0x3c9006
push 1
push dword [0x3db44c]
mov ecx, edi
call fcn.003c1570
mov esi, eax
test esi, esi
jl 0x3c9006
push 1
push dword [0x3db448]
mov ecx, edi
call fcn.003c1570
mov esi, eax
test esi, esi
jl 0x3c9006
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x10]
mov ecx, dword [ebp + 0x10]
mov ebx, dword [ebp - 0x14]
add eax, 0x14
mov eax, dword [eax + 4]
shl ecx, 2
add eax, ecx
mov eax, dword [eax]
add eax, 0xc
mov eax, dword [eax + 4]
shl ebx, 2
add eax, ebx
mov eax, dword [eax]
mov eax, dword [eax + 4]
push 1
push eax
mov ecx, edi
call fcn.003c1570
mov esi, eax
test esi, esi
jl 0x3c9006
push 1
push dword [0x3db444]
mov ecx, edi
call fcn.003c1570
mov esi, eax
test esi, esi
jl 0x3c9006
push 1
push dword [ebp - 0x2c]
mov ecx, edi
call fcn.003c1570
mov esi, eax
test esi, esi
jl 0x3c9006
push 1
push dword [0x3db450]
mov ecx, edi
call fcn.003c1570
mov esi, eax
test esi, esi
jl 0x3c9006
push 1
push dword [0x3db448]
mov ecx, edi
call fcn.003c1570
mov esi, eax
test esi, esi
jl 0x3c9006
mov eax, dword [ebp - 0x20]
mov eax, dword [eax + 0x10]
mov ecx, dword [ebp + 0x10]
add eax, 0x14
mov eax, dword [eax + 4]
shl ecx, 2
add eax, ecx
mov eax, dword [eax]
add eax, 0xc
mov eax, dword [eax + 4]
add eax, ebx
mov eax, dword [eax]
mov eax, dword [eax + 8]
push 1
push eax
mov ecx, edi
call fcn.003c1570
mov esi, eax
test esi, esi
jl 0x3c9006
push 1
push dword [0x3db444]
mov ecx, edi
call fcn.003c1570
mov esi, eax
push dword [ebp - 0x2c]
call fcn.003c13c0
pop ecx
inc dword [ebp - 0x14]
jmp 0x3c8e7a
test esi, esi
jl 0x3c902c
push 1
push dword [0x3db444]
mov ecx, edi
call fcn.003c1570
mov esi, eax
inc dword [ebp + 0x10]
jmp 0x3c8e4b
mov eax, dword [ebp - 0x24]
cmp eax, dword [edi + 0x30]
jae 0x3c9724
test esi, esi
jl 0x3c982f
imul eax, eax, 0x18
lea ebx, [eax + edi]
cmp dword [ebx + 0x14], 0
jne 0x3c9390
inc dword [ebp - 0x24]
xor ebx, ebx
inc ebx
jmp 0x3c9034
or dword [ebp - 4], 0xffffffff
jmp 0x3c1ca6
test esi, esi
jl 0x3c982f
xor eax, eax
cmp dword [edi + 0x3c], 2
je 0x3cf830
test esi, esi
jl 0x3c982f
lea eax, [edi + eax*4 + 0x34]
push dword [eax]
mov ecx, edi
push dword [0x3db4b0]
mov dword [ebp - 0x30], eax
call fcn.003c16c1
mov dword [ebp - 0x2c], eax
test eax, eax
je 0x3c9811
push ebx
push eax
mov ecx, edi
call fcn.003c1570
mov esi, eax
test esi, esi
jl 0x3c92a2
push ebx
push dword [0x3db4b8]
mov ecx, edi
call fcn.003c1570
mov esi, eax
test esi, esi
jl 0x3c92a2
push ebx
push dword [0x3db444]
mov ecx, edi
call fcn.003c1570
mov esi, eax
test esi, esi
jl 0x3c92a2
push ebx
push dword [ebp - 0x2c]
mov ecx, edi
call fcn.003c1570
mov esi, eax
test esi, esi
jl 0x3c92a2
push ebx
push dword [0x3db4c0]
mov ecx, edi
call fcn.003c1570
mov esi, eax
push dword [ebp - 0x2c]
call fcn.003c13c0
pop ecx
test esi, esi
jl 0x3c982f
push ebx
push dword [0x3db444]
mov ecx, edi
call fcn.003c1570
mov esi, eax
test esi, esi
jl 0x3c982f
mov eax, dword [ebp - 0x30]
push dword [eax]
mov ecx, edi
push dword [0x3db4b4]
call fcn.003c16c1
mov dword [ebp - 0x2c], eax
test eax, eax
je 0x3c981b
push ebx
push dword [0x3db444]
mov ecx, edi
call fcn.003c1570
mov esi, eax
test esi, esi
jl 0x3c9356
push ebx
push dword [ebp - 0x2c]
mov ecx, edi
call fcn.003c1570
mov esi, eax
test esi, esi
jl 0x3c9356
push ebx
push dword [0x3db4bc]
mov ecx, edi
call fcn.003c1570
mov esi, eax
test esi, esi
jl 0x3c9356
push ebx
push dword [0x3db444]
mov ecx, edi
call fcn.003c1570
mov esi, eax
test esi, esi
jl 0x3c9356
push ebx
push dword [ebp - 0x2c]
mov ecx, edi
call fcn.003c1570
mov esi, eax
test esi, esi
jl 0x3c9356
push ebx
push dword [0x3db4c4]
mov ecx, edi
call fcn.003c1570
mov esi, eax
push dword [ebp - 0x2c]
call fcn.003c13c0
pop ecx
test esi, esi
jl 0x3c982f
cmp dword [ebp + 0x10], 0xffffffff
je 0x3c9724
push ebx
push dword [0x3db444]
mov ecx, edi
call fcn.003c1570
and dword [ebp - 0x24], 0
mov esi, eax
mov eax, dword [ebp - 0x34]
mov dword [ebp - 0x1c], eax
jmp 0x3c9034
push 1
push dword [0x3db444]
mov ecx, edi
mov dword [ebp - 4], 7
call fcn.003c1570
mov ebx, dword [ebx + 0x10]
mov esi, eax
mov eax, dword [ebx]
mov dword [ebp - 0x20], eax
jmp 0x3c8e2c
test esi, esi
jl 0x3c982f
push ebx
mov ecx, edi
call fcn.003c2667
mov esi, eax
test esi, esi
jl 0x3c982f
push dword [ebp + 8]
and dword [ebp + 0x10], 0
mov dword [ebp - 4], 9
call dword [sym.imp.KERNEL32.dll_lstrlenW]
mov ebx, eax
add ebx, 6
xor ecx, ecx
push 2
pop edx
mov eax, ebx
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.003c13e0
pop ecx
mov dword [ebp + 0x10], eax
test eax, eax
je 0x3cfae5
push dword [ebp + 8]
push ebx
push dword [ebp + 0x10]
call fcn.003c21cb
mov esi, eax
test esi, esi
jl 0x3c97ae
push 0x3c97e0
push ebx
push dword [ebp + 0x10]
call fcn.003c2436
mov esi, eax
test esi, esi
jl 0x3c97ae
push dword [ebp + 0x10]
mov ecx, edi
push dword [ebp - 0x18]
call fcn.003c24ed
mov esi, eax
or dword [ebp - 4], 0xffffffff
cmp dword [ebp + 0x10], 0
je 0x3c97c1
push dword [ebp + 0x10]
call fcn.003c13c0
pop ecx
test esi, esi
jl 0x3c982f
cmp dword [ebp - 0x18], 0
je 0x3c97d4
push dword [ebp - 0x18]
call fcn.003c13c0
pop ecx
mov eax, esi
call fcn.003c1390
ret 0xc
or dword [ebp - 4], 0xffffffff
jmp 0x3c9058
mov esi, 0x8007000e
jmp 0x3c8c15
mov esi, 0x8007000e
jmp 0x3c1b0b
mov esi, 0x8007000e
jmp 0x3c1e0c
mov esi, 0x8007000e
jmp 0x3c92ab
mov esi, 0x8007000e
jmp 0x3c935f
mov esi, 0x8007000e
jmp 0x3c900f
mov ecx, edi
call fcn.003c26bf
jmp 0x3cfb0b