Function at 0x10016990
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x10020086
mov eax, dword fs:[0]
push eax
sub esp, 0x434
mov eax, dword [0x1002e018]
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
lea esi, [ebp - 0x410]
call fcn.10001ea0
lea eax, [ebp - 0x41c]
push eax
call fcn.10016e80
mov dword [ebp - 4], 0
lea esp, [esp]
lea ecx, [ebp - 0x434]
push ecx
call fcn.10016f10
mov esi, eax
lea edi, [ebp - 0x41c]
mov byte [ebp - 4], 2
call fcn.100178f0
test al, al
push 3
lea ecx, [ebp - 0x428]
sete bl
mov byte [ebp - 4], 0
call dword [sym.imp.MSVCP100D.dll_public:_void___thiscall_std::_Lockit::constructor_int_]
mov byte [ebp - 4], 3
mov eax, dword [ebp - 0x434]
test eax, eax
je 0x10016a74
cmp dword [eax + 4], 0
lea esi, [eax + 4]
je 0x10016a4a
jmp 0x10016a30
mov eax, dword [esi]
lea edx, [ebp - 0x434]
cmp eax, edx
je 0x10016a45
cmp dword [eax + 4], 0
lea esi, [eax + 4]
jne 0x10016a30
cmp dword [esi], 0
jne 0x10016a62
push 0xb5
push str.C:Program_Files__x86_Microsoft_Visual_Studio_10.0VCincludexutility
push str.ITERATOR_LIST_CORRUPTED_
call dword [sym.imp.MSVCP100D.dll_void___cdecl_std::_Debug_message_wchar_t_const___wchar_t_const___unsigned_int_]
add esp, 0xc
mov eax, dword [ebp - 0x430]
mov dword [esi], eax
mov dword [ebp - 0x434], 0
mov byte [ebp - 4], 0
mov edi, dword [sym.imp.MSVCP100D.dll_public:_void___thiscall_std::_Lockit::destructor_void_]
lea ecx, [ebp - 0x428]
call edi
test bl, bl
je 0x10016d48
mov ecx, dword [ebp - 0x41c]
test ecx, ecx
je 0x10016aad
mov edx, dword [ecx]
test edx, edx
je 0x10016aad
mov eax, dword [ebp - 0x414]
test eax, eax
je 0x10016aad
cmp eax, dword [edx + 8]
jne 0x10016b15
push 0xec
push str.C:Program_Files__x86_Microsoft_Visual_Studio_10.0VCincludextree
push str.map_set_iterator_not_dereferencable
call dword [sym.imp.MSVCP100D.dll_void___cdecl_std::_Debug_message_wchar_t_const___wchar_t_const___unsigned_int_]
mov ebx, dword [sym.imp.MSVCR100D.dll__CrtDbgReportW]
push str._Standard_C_Libraries_Out_of_Range___0
push 0
push 0xed
push str.C:Program_Files__x86_Microsoft_Visual_Studio_10.0VCincludextree
push 2
call ebx
add esp, 0x20
cmp eax, 1
jne 0x10016ae6
int3
mov edi, dword [sym.imp.MSVCR100D.dll__invalid_parameter]
push 0
push 0xed
push str.C:Program_Files__x86_Microsoft_Visual_Studio_10.0VCincludextree
push 0x10027ab0
push str._out_of_range_
call edi
mov eax, dword [ebp - 0x414]
mov ecx, dword [ebp - 0x41c]
add esp, 0x14
jmp 0x10016b21
mov ebx, dword [sym.imp.MSVCR100D.dll__CrtDbgReportW]
mov edi, dword [sym.imp.MSVCR100D.dll__invalid_parameter]
lea edx, [eax + 0xc]
mov dword [ebp - 0x424], edx
test ecx, ecx
je 0x10016b3d
mov edx, dword [ecx]
test edx, edx
je 0x10016b3d
test eax, eax
je 0x10016b3d
cmp eax, dword [edx + 8]
jne 0x10016b97
push 0xec
push str.C:Program_Files__x86_Microsoft_Visual_Studio_10.0VCincludextree
push str.map_set_iterator_not_dereferencable
call dword [sym.imp.MSVCP100D.dll_void___cdecl_std::_Debug_message_wchar_t_const___wchar_t_const___unsigned_int_]
push str._Standard_C_Libraries_Out_of_Range___0
push 0
push 0xed
push str.C:Program_Files__x86_Microsoft_Visual_Studio_10.0VCincludextree
push 2
call ebx
add esp, 0x20
cmp eax, 1
jne 0x10016b70
int3
push 0
push 0xed
push str.C:Program_Files__x86_Microsoft_Visual_Studio_10.0VCincludextree
push 0x10027ab0
push str._out_of_range_
call edi
mov eax, dword [ebp - 0x414]
mov ecx, dword [ebp - 0x41c]
add esp, 0x14
lea esi, [eax + 0xc]
test ecx, ecx
je 0x10016bad
mov ecx, dword [ecx]
test ecx, ecx
je 0x10016bad
test eax, eax
je 0x10016bad
cmp eax, dword [ecx + 8]
jne 0x10016c01
push 0xec
push str.C:Program_Files__x86_Microsoft_Visual_Studio_10.0VCincludextree
push str.map_set_iterator_not_dereferencable
call dword [sym.imp.MSVCP100D.dll_void___cdecl_std::_Debug_message_wchar_t_const___wchar_t_const___unsigned_int_]
push str._Standard_C_Libraries_Out_of_Range___0
push 0
push 0xed
push str.C:Program_Files__x86_Microsoft_Visual_Studio_10.0VCincludextree
push 2
call ebx
add esp, 0x20
cmp eax, 1
jne 0x10016be0
int3
push 0
push 0xed
push str.C:Program_Files__x86_Microsoft_Visual_Studio_10.0VCincludextree
push 0x10027ab0
push str._out_of_range_
call edi
mov eax, dword [ebp - 0x414]
add esp, 0x14
mov ecx, dword [esi + 8]
mov edx, dword [eax + 0x10]
xor edi, edi
or eax, 0xffffffff
cmp ecx, edi
je 0x10016c2d
movzx ebx, byte [edx]
mov esi, eax
and esi, 0xff
xor esi, ebx
shr eax, 8
xor eax, dword [ebp + esi*4 - 0x410]
dec ecx
inc edx
cmp ecx, edi
jne 0x10016c10
mov ecx, dword [ebp - 0x424]
not eax
cmp dword [ecx + 0xc], eax
jne 0x10016cc7
lea edx, [ebp - 0x440]
push edx
lea ecx, [ebp - 0x41c]
call fcn.100173e0
push 3
lea ecx, [ebp - 0x420]
call dword [sym.imp.MSVCP100D.dll_public:_void___thiscall_std::_Lockit::constructor_int_]
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x440]
cmp eax, edi
je 0x10016cb2
cmp dword [eax + 4], edi
lea esi, [eax + 4]
je 0x10016c8c
mov eax, dword [esi]
lea ecx, [ebp - 0x440]
cmp eax, ecx
je 0x10016c88
cmp dword [eax + 4], edi
lea esi, [eax + 4]
jne 0x10016c74
cmp dword [esi], edi
jne 0x10016ca4
push 0xb5
push str.C:Program_Files__x86_Microsoft_Visual_Studio_10.0VCincludexutility
push str.ITERATOR_LIST_CORRUPTED_
call dword [sym.imp.MSVCP100D.dll_void___cdecl_std::_Debug_message_wchar_t_const___wchar_t_const___unsigned_int_]
add esp, 0xc
mov edx, dword [ebp - 0x43c]
mov dword [esi], edx
mov dword [ebp - 0x440], edi
lea ecx, [ebp - 0x420]
mov byte [ebp - 4], 0
call dword [sym.imp.MSVCP100D.dll_public:_void___thiscall_std::_Lockit::destructor_void_]
jmp 0x100169e0
or ebx, 0xffffffff
push 3
lea ecx, [ebp - 0x420]
mov dword [ebp - 4], ebx
call dword [sym.imp.MSVCP100D.dll_public:_void___thiscall_std::_Lockit::constructor_int_]
mov dword [ebp - 4], 4
mov eax, dword [ebp - 0x41c]
cmp eax, edi
je 0x10016d32
cmp dword [eax + 4], edi
lea esi, [eax + 4]
je 0x10016d0c
mov eax, dword [esi]
lea ecx, [ebp - 0x41c]
cmp eax, ecx
je 0x10016d08
cmp dword [eax + 4], edi
lea esi, [eax + 4]
jne 0x10016cf4
cmp dword [esi], edi
jne 0x10016d24
push 0xb5
push str.C:Program_Files__x86_Microsoft_Visual_Studio_10.0VCincludexutility
push str.ITERATOR_LIST_CORRUPTED_
call dword [sym.imp.MSVCP100D.dll_void___cdecl_std::_Debug_message_wchar_t_const___wchar_t_const___unsigned_int_]
add esp, 0xc
mov edx, dword [ebp - 0x418]
mov dword [esi], edx
mov dword [ebp - 0x41c], edi
lea ecx, [ebp - 0x420]
mov dword [ebp - 4], ebx
call dword [sym.imp.MSVCP100D.dll_public:_void___thiscall_std::_Lockit::destructor_void_]
xor al, al
jmp 0x10016dc7
or ebx, 0xffffffff
push 3
lea ecx, [ebp - 0x424]
mov dword [ebp - 4], ebx
call dword [sym.imp.MSVCP100D.dll_public:_void___thiscall_std::_Lockit::constructor_int_]
mov dword [ebp - 4], 5
mov eax, dword [ebp - 0x41c]
test eax, eax
je 0x10016dba
cmp dword [eax + 4], 0
lea esi, [eax + 4]
je 0x10016d90
mov eax, dword [esi]
lea ecx, [ebp - 0x41c]
cmp eax, ecx
je 0x10016d8b
cmp dword [eax + 4], 0
lea esi, [eax + 4]
jne 0x10016d76
cmp dword [esi], 0
jne 0x10016da8
push 0xb5
push str.C:Program_Files__x86_Microsoft_Visual_Studio_10.0VCincludexutility
push str.ITERATOR_LIST_CORRUPTED_
call dword [sym.imp.MSVCP100D.dll_void___cdecl_std::_Debug_message_wchar_t_const___wchar_t_const___unsigned_int_]
add esp, 0xc
mov edx, dword [ebp - 0x418]
mov dword [esi], edx
mov dword [ebp - 0x41c], 0
lea ecx, [ebp - 0x424]
mov dword [ebp - 4], ebx
call edi
mov al, 1
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.1001ed20
mov esp, ebp
pop ebp
ret