Function at 0x407980
Capabilities:
Create directory
Delete file
Write file on windows

Disassembly:
push 0xffffffffffffffff
push 0x4202d3
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x27c
push ebx
push ebp
push esi
push edi
mov dword [esp + 0x1c], ecx
push 0x48
mov dword [esp + 0x298], 0
call sub.MSVCRT.dll_void____cdecl_operator_new_unsigned_int_
add esp, 4
mov dword [esp + 0x34], eax
test eax, eax
mov byte [esp + 0x294], 1
je 0x4079d3
mov ecx, eax
call fcn.004020f0
mov esi, eax
jmp 0x4079d5
xor esi, esi
mov eax, dword [esp + 0x29c]
mov byte [esp + 0x294], 0
mov eax, dword [eax + 4]
test eax, eax
jne 0x4079f0
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 edx, dword [esi]
push 0
push 0
push eax
mov ecx, esi
call dword [edx + 8]
push str.ROOT
mov ecx, esi
call fcn.00401990
test eax, eax
je 0x40812d
push str.UPDATE
mov ecx, eax
call fcn.00401990
test eax, eax
je 0x40812d
push str.UPDATELIST
mov ecx, eax
call fcn.00401a80
mov ebx, eax
test ebx, ebx
je 0x40805d
push str.size
mov ecx, ebx
call fcn.00401c50
push eax
call dword [sym.imp.MSVCRT.dll_atoi]
add esp, 4
mov dword [esp + 0x34], eax
test eax, eax
jle 0x408236
mov eax, dword [esp + 0x2a4]
test eax, eax
jne 0x407a6c
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 0
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
lea ecx, [esp + 0x2a0]
call dword [sym.imp.MSVCP60.dll_public:_char_const____thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::c_str_void_const]
sub esp, 0x10
mov ebp, eax
mov al, byte [esp + 0x23]
mov esi, esp
mov dword [esp + 0x28], esp
push 0
mov ecx, esi
mov byte [esi], 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, ebp
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push ebp
mov ecx, esi
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_char_const___unsigned_int_]
call fcn.004078a0
add esp, 0x10
test al, al
jne 0x407ae0
push 1
lea ecx, [esp + 0x2a4]
mov dword [esp + 0x298], 0xffffffff
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
xor al, al
jmp 0x40826f
lea ecx, [esp + 0x13]
push ecx
push 0x428878
lea ecx, [esp + 0x44]
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__]
lea edx, [esp + 0x12]
lea ecx, [esp + 0x4c]
push edx
push 0x428878
mov byte [esp + 0x29c], 2
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 dword [esp + 0x38], 0x422958
mov eax, dword [esp + 0x1c]
mov byte [esp + 0x294], 3
lea esi, [eax + 0x1f8]
mov eax, dword [eax + 0x1fc]
test eax, eax
jne 0x407b38
xor edx, edx
jmp 0x407b4e
mov ecx, dword [esi + 8]
sub ecx, eax
mov eax, 0x38e38e39
imul ecx
sar edx, 3
mov ecx, edx
shr ecx, 0x1f
add edx, ecx
mov ebp, dword [esp + 0x34]
cmp edx, ebp
jae 0x407b72
mov edi, dword [esi + 8]
lea edx, [esp + 0x38]
push edx
mov ecx, esi
call fcn.004088c0
sub ebp, eax
mov ecx, esi
push ebp
push edi
call fcn.004088f0
jmp 0x407b93
mov ecx, esi
call fcn.004088c0
cmp ebp, eax
jae 0x407b93
mov eax, dword [esi + 8]
mov ecx, dword [esi + 4]
push eax
lea eax, [ebp + ebp*8]
lea ecx, [ecx + eax*4]
push ecx
mov ecx, esi
call fcn.00408c60
mov dword [esp + 0x38], 0x422958
push 1
lea ecx, [esp + 0x50]
mov byte [esp + 0x298], 4
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
push 1
lea ecx, [esp + 0x40]
mov byte [esp + 0x298], 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 esi, dword [ebx + 0x18]
test esi, esi
je 0x407da4
xor ebx, ebx
push str.FILENAME
mov ecx, esi
call fcn.00401a80
mov eax, dword [eax + 0x18]
mov dl, byte [esp + 0x12]
push 0
lea ecx, [esp + 0x24]
mov ebp, dword [eax + 0x20]
mov byte [esp + 0x24], dl
add ebp, 8
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, ebp
or ecx, 0xffffffff
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push ebp
lea ecx, [esp + 0x28]
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_char_const___unsigned_int_]
mov edi, 0x4265c0
or ecx, 0xffffffff
xor eax, eax
mov byte [esp + 0x294], 5
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push eax
push 0x4265c0
lea ecx, [esp + 0x2c]
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]
push eax
lea eax, [esp + 0xb8]
push 0
push eax
lea ecx, [esp + 0x2c]
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_]
lea ecx, [esp + 0x2a0]
push eax
lea edx, [esp + 0xa8]
push ecx
push edx
mov byte [esp + 0x2a0], 6
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__
push str..zip
push eax
lea eax, [esp + 0xa8]
mov byte [esp + 0x2a8], 7
push eax
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___char_const__
add esp, 0x18
push 1
lea ecx, [esp + 0xa8]
mov byte [esp + 0x298], 0xa
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
push 1
lea ecx, [esp + 0xb8]
mov byte [esp + 0x298], 9
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
push str.DATAURL
mov ecx, esi
call fcn.00401a80
mov eax, dword [eax + 0x18]
mov cl, byte [esp + 0x12]
push 0
mov ebp, dword [eax + 0x20]
mov byte [esp + 0x84], cl
lea ecx, [esp + 0x84]
add ebp, 8
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
or ecx, 0xffffffff
mov edi, ebp
xor eax, eax
repne scasb al, byte es:[edi]
not ecx
dec ecx
push ecx
push ebp
lea ecx, [esp + 0x88]
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_char_const___unsigned_int_]
mov edx, dword [sym.imp.MSVCP60.dll_unsigned_int_const_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::npos]
mov edi, dword [esp + 0x1c]
mov byte [esp + 0x294], 0xb
mov ecx, dword [edx]
mov eax, dword [edi + 0x1fc]
push ecx
lea edx, [esp + 0x98]
push 0
push edx
lea ecx, [ebx + eax + 4]
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_]
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 [edi + 0x1fc]
mov edx, dword [ecx]
lea ecx, [esp + 0x80]
push edx
push 0
push ecx
lea ecx, [ebx + eax + 0x14]
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, [esp + 0x84]
add ebx, 0x24
mov byte [esp + 0x298], 9
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
push 1
lea ecx, [esp + 0x98]
mov byte [esp + 0x298], 5
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
push 1
lea ecx, [esp + 0x24]
mov byte [esp + 0x298], 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 esi, dword [esi + 0x28]
test esi, esi
jne 0x407bd0
mov ebx, dword [esp + 0x1c]
xor ebp, ebp
mov dword [esp + 0x18], ebp
mov dword [esp + 0x30], ebp
jmp 0x407db8
mov ebp, dword [esp + 0x30]
lea ecx, [esp + 0x38]
call fcn.0041b340
mov edx, 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 [ebx + 0x1fc]
mov byte [esp + 0x294], 0xc
mov ecx, dword [edx]
lea edx, [eax + ebp + 0x14]
push ecx
push 0
push edx
lea ecx, [esp + 0x5c]
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_]
lea ecx, [esp + 0xc4]
call fcn.00419f50
push 0xa00000
mov byte [esp + 0x298], 0xd
call sub.MSVCRT.dll_void____cdecl_operator_new_unsigned_int_
mov esi, eax
add esp, 4
mov ecx, 0x280000
xor eax, eax
mov edi, esi
test esi, esi
rep stosd dword es:[edi], eax
je 0x4080e1
mov al, byte [esp + 0x12]
push 0
lea ecx, [esp + 0x24]
mov dword [esp + 0x18], 0xa00000
mov byte [esp + 0x24], 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_]
lea ecx, [esp + 0x20]
lea edx, [esp + 0x38]
push ecx
mov byte [esp + 0x298], 0xe
sub esp, 0x48
mov ecx, esp
mov dword [esp + 0xdc], esp
push edx
call fcn.004077b0
lea eax, [esp + 0x60]
lea ecx, [esp + 0x110]
push eax
push esi
call fcn.0041ad90
mov eax, dword [ebx + 0x1fc]
mov eax, dword [eax + ebp + 8]
test eax, eax
jne 0x407e83
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 0x4265ac
push eax
call dword [sym.imp.MSVCRT.dll_fopen]
mov ebp, eax
add esp, 8
test ebp, ebp
je 0x4080cd
mov ecx, dword [esp + 0x14]
xor edi, edi
test ecx, ecx
jle 0x407ec7
push ebp
push ecx
lea ecx, [edi + esi]
push 1
push ecx
call dword [sym.imp.MSVCRT.dll_fwrite]
mov ecx, dword [esp + 0x24]
add esp, 0x10
sub ecx, eax
add edi, eax
test ecx, ecx
mov dword [esp + 0x14], ecx
jg 0x407ea6
push ebp
call dword [sym.imp.MSVCRT.dll_fclose]
push esi
call fcn.0041f590
add esp, 8
xor esi, esi
lea ecx, [esp + 0x17c]
push esi
call fcn.00404de0
mov eax, dword [ebx + 0x1fc]
mov edi, dword [esp + 0x30]
mov byte [esp + 0x294], 0xf
mov eax, dword [edi + eax + 8]
cmp eax, esi
jne 0x407f05
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 eax
lea ecx, [esp + 0x180]
call fcn.00404f30
test eax, eax
setne al
test al, al
je 0x40814e
mov eax, dword [esp + 0x2a4]
cmp eax, esi
jne 0x407f2f
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 esi
push eax
lea ecx, [esp + 0x184]
call fcn.00404eb0
lea ecx, [esp + 0x17c]
call fcn.00404e80
mov eax, dword [ebx + 0x1fc]
mov eax, dword [edi + eax + 8]
cmp eax, esi
jne 0x407f5c
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 eax
call dword [sym.imp.MSVCRT.dll_remove]
add esp, 4
lea ecx, [esp + 0x17c]
mov byte [esp + 0x294], 0xe
call fcn.00404e70
mov eax, dword [esp + 0x24]
cmp eax, esi
je 0x407f9f
lea ecx, [eax - 1]
mov al, byte [eax - 1]
test al, al
je 0x407f96
cmp al, 0xff
je 0x407f96
dec al
mov byte [ecx], al
jmp 0x407f9f
push ecx
call fcn.0041f590
add esp, 4
lea ecx, [esp + 0xc4]
mov dword [esp + 0x24], esi
mov dword [esp + 0x28], esi
mov dword [esp + 0x2c], esi
mov byte [esp + 0x294], 0xc
call fcn.0041a240
push 1
lea ecx, [esp + 0x74]
mov byte [esp + 0x298], 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_]
push 1
lea ecx, [esp + 0x64]
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 eax, dword [esp + 0x54]
cmp eax, esi
je 0x408004
lea ecx, [eax - 1]
mov al, byte [eax - 1]
test al, al
je 0x407ffb
cmp al, 0xff
je 0x407ffb
dec al
mov byte [ecx], al
jmp 0x408004
push ecx
call fcn.0041f590
add esp, 4
mov eax, dword [esp + 0x44]
mov dword [esp + 0x54], esi
cmp eax, esi
mov dword [esp + 0x58], esi
mov dword [esp + 0x5c], esi
je 0x408035
lea ecx, [eax - 1]
mov al, byte [eax - 1]
test al, al
je 0x40802c
cmp al, 0xff
je 0x40802c
dec al
mov byte [ecx], al
jmp 0x408035
push ecx
call fcn.0041f590
add esp, 4
mov eax, dword [esp + 0x18]
mov ecx, dword [esp + 0x34]
inc eax
add edi, 0x24
cmp eax, ecx
mov dword [esp + 0x44], esi
mov dword [esp + 0x48], esi
mov dword [esp + 0x4c], esi
mov dword [esp + 0x18], eax
mov dword [esp + 0x30], edi
jl 0x407db4
mov eax, dword [esp + 0x1c]
mov cl, byte [eax + 0x1e4]
test cl, cl
jne 0x4080a1
mov ecx, dword [0x4288c8]
push 0x3ff00000
push 0
push 0x3ff00000
push 0
push 0x40080000
push 0
push 0x40080000
push 0
push ecx
call fcn.00409a90
add esp, 0x24
push 0x3e8
call dword [sym.imp.KERNEL32.dll_Sleep]
mov ecx, dword [esp + 0x2a4]
test ecx, ecx
je 0x40826d
mov al, byte [ecx - 1]
test al, al
je 0x408263
cmp al, 0xff
je 0x408263
dec al
mov byte [ecx - 1], al
jmp 0x40826d
push 1
lea ecx, [esp + 0x24]
mov byte [esp + 0x298], 0xd
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 ecx, [esp + 0xc4]
mov byte [esp + 0x294], 0xc
call fcn.0041a240
push 1
lea ecx, [esp + 0x74]
mov byte [esp + 0x298], 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_]
push 1
lea ecx, [esp + 0x64]
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
push 1
lea ecx, [esp + 0x54]
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
push 1
lea ecx, [esp + 0x44]
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
push 1
lea ecx, [esp + 0x2a4]
mov dword [esp + 0x298], 0xffffffff
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
xor al, al
jmp 0x40826f
mov ecx, dword [esp + 0x18]
mov eax, dword [ebx + 0x1fc]
lea edx, [ecx + ecx*8]
lea eax, [eax + edx*4 + 4]
mov eax, dword [eax + 4]
cmp eax, esi
jne 0x40816b
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 eax
call dword [sym.imp.MSVCRT.dll_remove]
add esp, 4
lea ecx, [esp + 0x17c]
mov byte [esp + 0x294], 0xe
call fcn.00404e70
mov eax, dword [esp + 0x24]
cmp eax, esi
je 0x4081ae
lea ecx, [eax - 1]
mov al, byte [eax - 1]
test al, al
je 0x4081a5
cmp al, 0xff
je 0x4081a5
dec al
mov byte [ecx], al
jmp 0x4081ae
push ecx
call fcn.0041f590
add esp, 4
lea ecx, [esp + 0xc4]
mov dword [esp + 0x24], esi
mov dword [esp + 0x28], esi
mov dword [esp + 0x2c], esi
mov byte [esp + 0x294], 0xc
call fcn.0041a240
push 1
lea ecx, [esp + 0x74]
mov byte [esp + 0x298], 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_]
push 1
lea ecx, [esp + 0x64]
call dword [sym.imp.MSVCP60.dll_private:_void___thiscall_std::basic_string_char__struct_std::char_traits_char___class_std::allocator_char__::_Tidy_bool_]
push 1
lea ecx, [esp + 0x54]
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 eax, dword [esp + 0x44]
cmp eax, esi
je 0x40821f
lea ecx, [eax - 1]
mov al, byte [eax - 1]
test al, al
je 0x408216
cmp al, 0xff
je 0x408216
dec al
mov byte [ecx], al
jmp 0x40821f
push ecx
call fcn.0041f590
add esp, 4
mov ecx, dword [esp + 0x2a4]
mov dword [esp + 0x44], esi
mov dword [esp + 0x48], esi
mov dword [esp + 0x4c], esi
cmp ecx, esi
jmp 0x40823f
mov ecx, dword [esp + 0x2a4]
test ecx, ecx
je 0x40825f
mov al, byte [ecx - 1]
test al, al
je 0x408255
cmp al, 0xff
je 0x408255
dec al
mov byte [ecx - 1], al
xor al, al
jmp 0x40826f
dec ecx
push ecx
call fcn.0041f590
add esp, 4
xor al, al
jmp 0x40826f
dec ecx
push ecx
call fcn.0041f590
add esp, 4
mov al, 1
mov ecx, dword [esp + 0x28c]
pop edi
pop esi
pop ebp
mov dword fs:[0], ecx
pop ebx
add esp, 0x288
ret 0x18