Function at 0x4042f0
Capabilities:
Delete file
Write file on windows

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x406cf4
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x48c
mov eax, dword [ebp + 8]
push ebx
push esi
push edi
mov esi, dword [eax + 4]
mov dword [ebp - 0x10], esp
test esi, esi
mov dword [ebp - 0x30], ecx
je 0x404997
mov ecx, dword [eax + 8]
mov eax, 0x7f411e53
sub ecx, esi
imul ecx
sar edx, 0xa
mov eax, edx
shr eax, 0x1f
add edx, eax
je 0x404997
xor eax, eax
xor edi, edi
mov ecx, esi
test esi, esi
je 0x40435c
cmp edi, edx
jae 0x40435c
mov ebx, dword [ecx]
add eax, ebx
inc edi
add ecx, 0x80c
jmp 0x404347
cmp eax, 0x500000
jg 0x404997
cmp eax, 0x800
jl 0x404997
lea esi, [eax + 1]
push esi
call dword [sym.imp.MSVCRT.dll_malloc]
add esp, 4
mov dword [ebp - 0x18], eax
test eax, eax
je 0x404997
mov edi, dword [ebp - 0x18]
mov ecx, esi
mov edx, ecx
xor eax, eax
shr ecx, 2
rep stosd dword es:[edi], eax
mov ecx, edx
and ecx, 3
xor ebx, ebx
rep stosb byte es:[edi], al
mov eax, dword [ebp + 8]
mov dword [ebp - 0x14], ebx
mov dword [ebp - 0x2c], ebx
mov esi, dword [eax + 4]
test esi, esi
je 0x40440c
mov ecx, dword [ebp + 8]
mov eax, 0x7f411e53
mov ecx, dword [ecx + 8]
sub ecx, esi
imul ecx
sar edx, 0xa
mov eax, edx
shr eax, 0x1f
add edx, eax
mov eax, dword [ebp - 0x2c]
cmp eax, edx
jae 0x40440c
mov edx, dword [ebp - 0x18]
mov eax, dword [ebp - 0x14]
mov ecx, dword [esi + ebx]
lea esi, [esi + ebx + 4]
lea edi, [edx + eax]
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [ebp + 8]
mov esi, dword [ecx + 4]
mov ecx, dword [ebp - 0x2c]
mov edx, dword [esi + ebx]
add eax, edx
inc ecx
mov dword [ebp - 0x14], eax
mov dword [ebp - 0x2c], ecx
add ebx, 0x80c
jmp 0x4043ad
mov esi, dword [ebp + 0xc]
mov ebx, dword [ebp - 0x14]
mov edx, dword [esi + 8]
lea eax, [esi + 0x4c]
sub ebx, edx
lea ecx, [esi + 0x5c]
push eax
lea edx, [ebp - 0x40]
push ecx
push edx
mov dword [ebp - 0x14], ebx
call sub.MSVCP60.dll_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char_____cdecl_std::operator_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const__
add esp, 0xc
mov edi, 0x409054
or ecx, 0xffffffff
xor eax, eax
mov dword [ebp - 4], 0
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push eax
push 0x409054
lea ecx, [ebp - 0x40]
call dword [sym.imp.MSVCP60.dll_public:_unsigned_int___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::find_char_const___unsigned_int__unsigned_int_const]
mov ecx, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
mov edx, dword [ecx]
cmp eax, edx
je 0x4044a0
mov ecx, edx
dec eax
push ecx
lea edx, [ebp - 0x50]
push eax
push edx
lea ecx, [ebp - 0x40]
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char_____thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::substr_unsigned_int__unsigned_int_]
mov ecx, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
mov byte [ebp - 4], 1
mov edx, dword [ecx]
lea ecx, [ebp - 0x40]
push edx
push 0
push eax
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::assign_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___unsigned_int__unsigned_int_]
push 1
lea ecx, [ebp - 0x50]
mov byte [ebp - 4], 0
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
mov ecx, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
mov eax, dword [ebp - 0x38]
cmp eax, 0xc8
jbe 0x4044bb
mov eax, dword [ecx]
lea ecx, [ebp - 0x40]
push eax
push 0xc8
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char______thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::erase_unsigned_int__unsigned_int_]
mov eax, dword [ebp - 0x3c]
test eax, eax
jne 0x4044c7
mov eax, dword [sym.imp.MSVCP60.dll_char_const__private:_static_char_const____cdecl_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Nullstr_void_::_2::_C]
push 0x104
lea edx, [ebp - 0x194]
push eax
push edx
call dword [sym.imp.MSVCRT.dll_strncpy]
lea edi, [ebp - 0x194]
or ecx, 0xffffffff
xor eax, eax
add esp, 0xc
xor edx, edx
repne scasb al, byte es:[edi]
not ecx
dec ecx
je 0x404535
mov al, byte [ebp + edx - 0x194]
cmp al, 0x2f
je 0x404518
cmp al, 0x5c
je 0x404518
cmp al, 0x3f
je 0x404518
cmp al, 0x3a
je 0x404518
cmp al, 0x2a
je 0x404518
cmp al, 0x7c
je 0x404518
cmp al, 0x3e
je 0x404518
cmp al, 0x3c
jne 0x404520
mov byte [ebp + edx - 0x194], 0x7e
lea edi, [ebp - 0x194]
or ecx, 0xffffffff
xor eax, eax
inc edx
repne scasb al, byte es:[edi]
not ecx
dec ecx
cmp edx, ecx
jb 0x4044f1
mov esi, dword [esi + 0x20]
test esi, esi
jne 0x404542
mov esi, dword [sym.imp.MSVCP60.dll_char_const__private:_static_char_const____cdecl_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Nullstr_void_::_2::_C]
mov al, byte [ebp + 0xb]
push 0
lea ecx, [ebp - 0x28]
mov byte [ebp - 0x28], al
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
mov edi, esi
or ecx, 0xffffffff
xor eax, eax
push 1
repne scasb al, byte es:[edi]
not ecx
dec ecx
mov ebx, ecx
lea ecx, [ebp - 0x28]
push ebx
call dword [sym.imp.MSVCP60.dll_private:_bool___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Grow_unsigned_int__bool_]
test al, al
je 0x40458e
mov edi, dword [ebp - 0x24]
mov ecx, ebx
mov edx, ecx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov eax, dword [ebp - 0x24]
mov dword [ebp - 0x20], ebx
mov byte [eax + ebx], 0
mov ebx, dword [ebp + 0xc]
push str.gzip
mov byte [ebp - 4], 2
lea ecx, [ebx + 0x2c]
push ecx
call dword [sym.imp.MSVCP60.dll_bool___cdecl_std::operator_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___char_const__]
add esp, 8
mov ecx, 0x409314
test al, al
jne 0x4045b5
mov ecx, 0x409784
mov eax, dword [ebp - 0x24]
test eax, eax
jne 0x4045c1
mov eax, dword [sym.imp.MSVCP60.dll_char_const__private:_static_char_const____cdecl_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Nullstr_void_::_2::_C]
mov esi, dword [ebp - 0x30]
push ecx
lea edx, [ebp - 0x194]
push eax
push edx
mov ecx, esi
call fcn.00405260
push eax
lea eax, [ebp - 0x298]
push str.c:proxyData_s__s._s_s
push eax
call dword [sym.imp.MSVCRT.dll_sprintf]
lea ecx, [ebp - 0x298]
push 0x4092f8
push ecx
call dword [sym.imp.MSVCRT.dll_fopen]
mov edi, eax
add esp, 0x20
test edi, edi
mov dword [ebp + 8], edi
je 0x404670
mov eax, dword [ebx + 0xc]
mov byte [ebp - 4], 3
cmp eax, 1
push edi
jne 0x40463c
mov edx, dword [ebp - 0x14]
mov eax, dword [ebp - 0x18]
push edx
mov edx, dword [ebx + 8]
add eax, edx
mov ecx, esi
push eax
call fcn.00404ef0
jmp 0x404659
mov ecx, dword [ebp - 0x14]
mov edx, dword [ebp - 0x18]
mov esi, dword [ebx + 8]
push ecx
add edx, esi
push 1
push edx
call dword [sym.imp.MSVCRT.dll_fwrite]
add esp, 0x10
jmp 0x404659
push edi
mov dword [ebp - 4], 2
call dword [sym.imp.MSVCRT.dll_fclose]
mov esi, dword [ebp - 0x30]
mov ebx, dword [ebp + 0xc]
add esp, 4
mov eax, dword [ebp - 0x18]
xor edi, edi
cmp eax, edi
je 0x404683
push eax
call dword [sym.imp.MSVCRT.dll_free]
add esp, 4
lea eax, [ebx + 0x2c]
push str.gzip
push eax
call dword [sym.imp.MSVCP60.dll_bool___cdecl_std::operator_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___char_const__]
add esp, 8
test al, al
je 0x40484d
mov cl, byte [ebp + 0xb]
push edi
mov byte [ebp - 0x50], cl
lea ecx, [ebp - 0x50]
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
lea edx, [ebp - 0x50]
lea eax, [ebp + 0xb]
push edx
lea edx, [ebp - 0x298]
sub esp, 0x10
mov byte [ebp - 4], 5
mov ecx, esp
mov dword [ebp + 8], esp
push eax
push edx
call dword [sym.imp.MSVCP60.dll_public:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::constructor_char_const___class_std::allocator_char__const__]
mov ecx, esi
call fcn.00404fd0
cmp dword [0x409858], 1
jne 0x404819
mov ecx, 0xf
xor eax, eax
lea edi, [ebp - 0x8f]
mov byte [ebp - 0x90], 0
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov edi, dword [ebp - 0x4c]
test edi, edi
jne 0x404708
mov edi, dword [sym.imp.MSVCP60.dll_char_const__private:_static_char_const____cdecl_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Nullstr_void_::_2::_C]
lea eax, [esi + 0xfc]
push str.utf_8
push eax
call dword [sym.imp.MSVCP60.dll_bool___cdecl_std::operator_class_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char___const___char_const__]
add esp, 8
lea ecx, [ebp - 0x90]
neg al
sbb eax, eax
neg eax
add eax, 3
push eax
push ecx
push edi
lea ecx, [esi + 0xa74]
call fcn.00402010
cmp eax, 4
jne 0x404817
lea edx, [ebp - 0x90]
lea eax, [ebp - 0x498]
push edx
push str._3.
push eax
call dword [sym.imp.MSVCRT.dll_sprintf]
xor esi, esi
lea ecx, [ebp - 0x498]
push esi
push ecx
call fcn.00401040
mov ecx, dword [ebp - 0x4c]
add esp, 0x14
cmp ecx, esi
je 0x404791
mov al, byte [ecx - 1]
test al, al
je 0x404787
cmp al, 0xff
je 0x404787
dec al
mov byte [ecx - 1], al
jmp 0x404791
dec ecx
push ecx
call sub.MSVCRT.dll_void___cdecl_operator_delete_void__
add esp, 4
mov ecx, dword [ebp - 0x24]
mov dword [ebp - 0x4c], esi
cmp ecx, esi
mov dword [ebp - 0x48], esi
mov dword [ebp - 0x44], esi
je 0x4047bd
mov al, byte [ecx - 1]
test al, al
je 0x4047b3
cmp al, 0xff
je 0x4047b3
dec al
mov byte [ecx - 1], al
jmp 0x4047bd
dec ecx
push ecx
call sub.MSVCRT.dll_void___cdecl_operator_delete_void__
add esp, 4
mov ecx, dword [ebp - 0x3c]
mov dword [ebp - 0x24], esi
cmp ecx, esi
mov dword [ebp - 0x20], esi
mov dword [ebp - 0x1c], esi
je 0x4047ff
mov al, byte [ecx - 1]
test al, al
je 0x4047f5
cmp al, 0xff
je 0x4047f5
dec al
mov byte [ecx - 1], al
mov eax, 4
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
dec ecx
push ecx
call sub.MSVCRT.dll_void___cdecl_operator_delete_void__
add esp, 4
mov eax, 4
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
xor edi, edi
lea edx, [ebp - 0x298]
push edx
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
mov ecx, dword [ebp - 0x4c]
mov byte [ebp - 4], 2
cmp ecx, edi
je 0x40484d
mov al, byte [ecx - 1]
test al, al
je 0x404843
cmp al, 0xff
je 0x404843
dec al
mov byte [ecx - 1], al
jmp 0x40484d
dec ecx
push ecx
call sub.MSVCRT.dll_void___cdecl_operator_delete_void__
add esp, 4
mov ecx, dword [ebx + 0x18]
mov eax, 1
cmp ecx, eax
jne 0x404948
cmp dword [0x409850], eax
jne 0x404948
push 0x7ab7
push eax
lea eax, [ebp - 0x298]
push eax
call fcn.00402200
add esp, 0xc
test eax, eax
jle 0x404948
mov eax, dword [esi + 0x110]
mov ecx, dword [sym.imp.MSVCP60.dll_char_const__private:_static_char_const____cdecl_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Nullstr_void_::_2::_C]
cmp eax, edi
je 0x404898
mov ecx, eax
mov eax, dword [esi + 0x120]
cmp eax, edi
jne 0x4048a7
mov eax, dword [sym.imp.MSVCP60.dll_char_const__private:_static_char_const____cdecl_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Nullstr_void_::_2::_C]
push ecx
push eax
lea ecx, [ebp - 0x498]
push str._2.
push ecx
call dword [sym.imp.MSVCRT.dll_sprintf]
lea edx, [ebp - 0x498]
push edi
push edx
call fcn.00401040
mov ecx, dword [ebp - 0x24]
add esp, 0x18
cmp ecx, edi
je 0x4048ee
mov al, byte [ecx - 1]
test al, al
je 0x4048e4
cmp al, 0xff
je 0x4048e4
dec al
mov byte [ecx - 1], al
jmp 0x4048ee
dec ecx
push ecx
call sub.MSVCRT.dll_void___cdecl_operator_delete_void__
add esp, 4
mov ecx, dword [ebp - 0x3c]
mov dword [ebp - 0x24], edi
cmp ecx, edi
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x1c], edi
je 0x404930
mov al, byte [ecx - 1]
test al, al
je 0x404926
cmp al, 0xff
je 0x404926
dec al
mov byte [ecx - 1], al
mov eax, 3
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
dec ecx
push ecx
call sub.MSVCRT.dll_void___cdecl_operator_delete_void__
add esp, 4
mov eax, 3
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
mov ecx, dword [ebp - 0x24]
cmp ecx, edi
je 0x40496b
mov al, byte [ecx - 1]
test al, al
je 0x404961
cmp al, 0xff
je 0x404961
dec al
mov byte [ecx - 1], al
jmp 0x40496b
dec ecx
push ecx
call sub.MSVCRT.dll_void___cdecl_operator_delete_void__
add esp, 4
mov ecx, dword [ebp - 0x3c]
mov dword [ebp - 0x24], edi
cmp ecx, edi
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x1c], edi
je 0x404997
mov al, byte [ecx - 1]
test al, al
je 0x40498d
cmp al, 0xff
je 0x40498d
dec al
mov byte [ecx - 1], al
jmp 0x404997
dec ecx
push ecx
call sub.MSVCRT.dll_void___cdecl_operator_delete_void__
add esp, 4
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
xor eax, eax
mov dword fs:[0], ecx
pop ebx
mov esp, ebp
pop ebp
ret 8