Function at 0x4409e0
Capabilities:
Encode data using xor

Disassembly:
push 0xffffffffffffffff
push 0x44869c
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x790
mov eax, dword [esp + 0x7a0]
push ebx
push ebp
push esi
push edi
xor ebx, ebx
push eax
mov dword [esp + 0x14], ebx
call sub.MSVCRT.dll_void____cdecl_operator_new_unsigned_int_
mov ecx, dword [esp + 0x7b4]
mov edi, eax
push ecx
call sub.MSVCRT.dll_void____cdecl_operator_new_unsigned_int_
mov edx, dword [sym.imp.MSVCP60.dll_const_std::basic_ifstream_char__struct_std::char_traits_char__::vbtable]
add esp, 8
lea ecx, [esp + 0x74]
mov ebp, eax
mov dword [esp + 0x18], edx
call dword [sym.imp.MSVCP60.dll_protected:_void___thiscall_std::ios_base::constructor_void_]
mov eax, dword [sym.imp.MSVCP60.dll_const_std::basic_ios_char__struct_std::char_traits_char__::vftable]
mov esi, 1
mov dword [esp + 0x74], eax
mov dword [esp + 0x10], esi
push ebx
lea ecx, [esp + 0x24]
push ebx
push ecx
lea ecx, [esp + 0x24]
mov dword [esp + 0x7b4], ebx
call dword [sym.imp.MSVCP60.dll_public:_void___thiscall_std::basic_istream_char__struct_std::char_traits_char__::constructor_class_std::basic_streambuf_char__struct_std::char_traits_char_____bool_]
lea edx, [esp + 0x20]
lea ecx, [esp + 0x20]
mov dword [esp + 0x7a8], esi
mov dword [esp + 0x14], edx
call dword [sym.imp.MSVCP60.dll_protected:_void___thiscall_std::basic_streambuf_char__struct_std::char_traits_char__::constructor_void_]
lea ecx, [esp + 0x6c]
call dword [sym.imp.MSVCP60.dll_public:_void___thiscall_std::locale::constructor_void_]
mov eax, dword [sym.imp.MSVCP60.dll_const_std::basic_filebuf_char__struct_std::char_traits_char__::vftable]
push ebx
push ebx
lea ecx, [esp + 0x28]
mov byte [esp + 0x7b0], 3
mov dword [esp + 0x28], eax
call dword [sym.imp.MSVCP60.dll_protected:_void___thiscall_std::basic_filebuf_char__struct_std::char_traits_char__::_Init_struct__iobuf___enum_std::basic_filebuf_char__struct_std::char_traits_char__::_Initfl_]
mov ecx, dword [esp + 0x18]
mov eax, dword [sym.imp.MSVCP60.dll_const_std::basic_ifstream_char__struct_std::char_traits_char__::vftable]
mov edx, dword [ecx + 4]
mov dword [esp + edx + 0x18], eax
mov eax, dword [esp + 0x70]
mov dword [esp + 0x7a8], 4
cmp eax, ebx
jne 0x440afc
lea ecx, [esp + 0x8b4]
push 0x21
push ecx
call dword [sym.imp.MSVCP60.dll_struct__iobuf____cdecl_std::__Fiopen_char_const___int_]
add esp, 8
cmp eax, ebx
je 0x440afc
push esi
push eax
lea ecx, [esp + 0x28]
call dword [sym.imp.MSVCP60.dll_protected:_void___thiscall_std::basic_filebuf_char__struct_std::char_traits_char__::_Init_struct__iobuf___enum_std::basic_filebuf_char__struct_std::char_traits_char__::_Initfl_]
lea ecx, [esp + 0x20]
call dword [sym.imp.MSVCP60.dll_protected:_void___thiscall_std::basic_filebuf_char__struct_std::char_traits_char__::_Initcvt_void_]
lea edx, [esp + 0x20]
test edx, edx
jne 0x440b15
mov eax, dword [esp + 0x18]
push ebx
mov ecx, dword [eax + 4]
mov eax, dword [esp + ecx + 0x20]
or al, 2
lea ecx, [esp + ecx + 0x1c]
push eax
call dword [sym.imp.MSVCP60.dll_public:_void___thiscall_std::basic_ios_char__struct_std::char_traits_char__::clear_int__bool_]
mov edx, dword [esp + 0x7b0]
lea ecx, [esp + 0x18]
push edx
push ebp
call dword [sym.imp.MSVCP60.dll_public:_class_std::basic_istream_char__struct_std::char_traits_char______thiscall_std::basic_istream_char__struct_std::char_traits_char__::read_char___int_]
mov eax, dword [esp + 0x70]
cmp eax, ebx
je 0x440b53
push eax
call dword [sym.imp.MSVCRT.dll_fclose]
add esp, 4
test eax, eax
jne 0x440b53
push 2
push ebx
lea ecx, [esp + 0x28]
call dword [sym.imp.MSVCP60.dll_protected:_void___thiscall_std::basic_filebuf_char__struct_std::char_traits_char__::_Init_struct__iobuf___enum_std::basic_filebuf_char__struct_std::char_traits_char__::_Initfl_]
lea eax, [esp + 0x20]
test eax, eax
jne 0x440b6c
mov ecx, dword [esp + 0x18]
push ebx
mov edx, dword [ecx + 4]
mov eax, dword [esp + edx + 0x20]
lea ecx, [esp + edx + 0x1c]
or al, 2
push eax
call dword [sym.imp.MSVCP60.dll_public:_void___thiscall_std::basic_ios_char__struct_std::char_traits_char__::clear_int__bool_]
mov ecx, dword [esp + 0x7b0]
xor eax, eax
cmp ecx, ebx
jbe 0x440b94
mov cl, byte [esp + 0xeb8]
mov dl, byte [eax + ebp]
xor dl, cl
mov byte [eax + ebp], dl
mov ecx, dword [esp + 0x7b0]
inc eax
cmp eax, ecx
jb 0x440b79
mov edx, ecx
mov esi, ebp
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
push 0xf
and ecx, 3
push 6
rep movsb byte es:[edi], byte [esi]
mov esi, dword [esp + 0x7b8]
push ebx
lea ecx, [esp + 0xb4]
call fcn.00441390
mov eax, dword [esp + 0xa8]
push 1
push ebx
push esi
push ebp
lea ecx, [esp + 0xb8]
mov byte [esp + 0x7b8], 5
call dword [eax + 0x14]
mov edx, dword [esp + 0xa8]
push 1
push 0xffffffffffffffff
push ebx
push ebx
lea ecx, [esp + 0xb8]
call dword [edx + 0x14]
lea ecx, [esp + 0xa8]
call fcn.00408110
mov ebx, eax
push ebx
call sub.MSVCRT.dll_void____cdecl_operator_new_unsigned_int_
add esp, 4
lea ecx, [esp + 0xa8]
mov dword [esp + 0x14], eax
push ebx
push eax
call fcn.004081f0
lea ecx, [esp + 0xa8]
mov byte [esp + 0x7a8], 4
call fcn.00403200
lea edi, [esp + 0x7b4]
or ecx, 0xffffffff
xor eax, eax
mov edx, dword [esp + 0xec8]
repne scasb al, byte es:[edi]
not ecx
lea esi, [edx + 4]
sub edi, ecx
mov eax, ecx
mov dword [esp + 0x10], esi
mov esi, edi
mov edi, dword [esp + 0x10]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
mov eax, dword [esp + 0xeb4]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [esp + 0x7b0]
mov dword [edx + 0x104], eax
mov eax, dword [esp + 0xebc]
mov dword [edx + 0x10c], ecx
mov cl, byte [esp + 0xeb8]
mov dword [edx + 0x110], eax
mov eax, dword [esp + 0xec4]
mov byte [edx + 0x108], cl
mov ecx, dword [esp + 0xec0]
mov dword [edx], ebx
test ebp, ebp
mov dword [edx + 0x114], ecx
mov dword [edx + 0x118], eax
je 0x440cbf
push ebp
call fcn.00442b1e
add esp, 4
lea ecx, [esp + 0x74]
mov dword [esp + 0x7a8], 0xffffffff
call dword [sym.imp.MSVCP60.dll_public_virtual:_void___thiscall_std::basic_ifstream_char__struct_std::char_traits_char__::destructor_void_]
mov ecx, dword [sym.imp.MSVCP60.dll_const_std::basic_ios_char__struct_std::char_traits_char__::vftable]
mov dword [esp + 0x74], ecx
lea ecx, [esp + 0x74]
call dword [sym.imp.MSVCP60.dll_public_virtual:_void___thiscall_std::ios_base::destructor_void_]
mov ecx, dword [esp + 0x7a0]
mov eax, dword [esp + 0x14]
pop edi
pop esi
pop ebp
pop ebx
mov dword fs:[0], ecx
add esp, 0x79c
ret