Function at 0x403310
Capabilities:
Encode data using xor
Resolve function by parsing pe exports

Disassembly:
push 0xffffffffffffffff
push 0x4a82f7
mov eax, dword fs:[0]
push eax
sub esp, 0xc4
mov eax, dword [0x4dffd0]
xor eax, esp
mov dword [esp + 0xc0], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x4dffd0]
xor eax, esp
push eax
lea eax, [esp + 0xd8]
mov dword fs:[0], eax
mov ebp, dword [esp + 0xe8]
lea ecx, [esp + 0x54]
mov dword [esp + 0x14], ebp
call fcn.00401c00
xor ebx, ebx
lea ecx, [esp + 0x54]
mov dword [esp + 0xe0], ebx
call dword [sym.imp.MSVCP80.dll_public:_wchar_t_const____thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::c_str_void_const]
push eax
lea ecx, [esp + 0x3c]
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::constructor_wchar_t_const__]
xor eax, eax
push str.NtQuerySystemInformation
push str.ntdll
mov byte [esp + 0xe8], 1
mov dword [esp + 0x20], ebx
mov dword [esp + 0x24], eax
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], eax
mov dword [esp + 0x30], eax
mov dword [esp + 0x34], eax
mov dword [esp + 0x38], eax
mov dword [esp + 0x3c], eax
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
cmp eax, ebx
je 0x4033ce
push ebx
push 0x20
lea ecx, [esp + 0x20]
push ecx
push 3
call eax
push ebx
lea ecx, [esp + 0x3c]
call dword [sym.imp.MSVCP80.dll_public:_wchar_t____thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::operator___unsigned_int_]
push ebx
lea ecx, [esp + 0x3c]
mov esi, eax
call dword [sym.imp.MSVCP80.dll_public:_wchar_t____thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::operator___unsigned_int_]
push eax
call fcn.004028a0
add esp, 4
lea ecx, [esp + 0x38]
call dword [sym.imp.MSVCP80.dll_public:_unsigned_int___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::size_void_const]
mov edi, eax
xor eax, eax
cmp edi, ebx
mov dword [esp + 0x80], edi
jbe 0x403425
jmp 0x403410
mov edx, eax
and edx, 3
mov cx, word [esp + edx*2 + 0x18]
xor word [esi + eax*2], cx
add eax, 1
cmp eax, edi
jb 0x403410
xor eax, eax
mov word [esp + 0x70], bx
lea ebx, [edi + edi]
cmp ebx, 0x10
mov dword [esp + 0x72], eax
mov dword [esp + 0x76], eax
mov dword [esp + 0x7a], eax
mov word [esp + 0x7e], ax
jae 0x403456
push ebx
lea edx, [esp + 0x74]
push esi
push edx
call sub.MSVCR80.dll_memcpy
add esp, 0xc
jmp 0x4034ae
mov edi, ebx
shr edi, 3
xor ebp, ebp
lea ecx, [ecx]
cmp ebp, 7
jne 0x403485
lea eax, [edi*8]
sub eax, edi
mov ecx, ebx
sub ecx, eax
push ecx
add eax, esi
push eax
call fcn.00401ec0
mov word [esp + 0x86], ax
jmp 0x403498
mov edx, ebp
imul edx, edi
add edx, esi
push edi
push edx
call fcn.00401ec0
mov word [esp + ebp*2 + 0x78], ax
add ebp, 1
add esp, 8
cmp ebp, 8
jb 0x403460
mov ebp, dword [esp + 0x14]
mov edi, dword [esp + 0x80]
push 0x48
lea eax, [esp + 0x8e]
push 0
push eax
mov word [esp + 0x94], 0
call sub.MSVCR80.dll_memset
lea ecx, [esp + 0x94]
add esp, 0xc
test ecx, ecx
je 0x403548
movzx edx, byte [esp + 0x7f]
movzx eax, byte [esp + 0x7e]
movzx ecx, byte [esp + 0x7d]
push edx
movzx edx, byte [esp + 0x80]
push eax
movzx eax, byte [esp + 0x83]
push ecx
movzx ecx, byte [esp + 0x86]
push edx
movzx edx, byte [esp + 0x89]
push eax
movzx eax, byte [esp + 0x8c]
push ecx
movzx ecx, word [esp + 0x8e]
push edx
movzx edx, word [esp + 0x90]
push eax
mov eax, dword [esp + 0x90]
push ecx
push edx
push eax
push str._08x__04x__04x__02x_02x__02x_02x_02x_02x_02x_02x
lea ecx, [esp + 0xb8]
push 0x25
push ecx
call dword [sym.imp.MSVCR80.dll__snwprintf]
add esp, 0x38
lea edx, [esp + 0x88]
push edx
mov ecx, ebp
call dword [0x4b3378]
cmp edi, 3
jb 0x4035b8
xor eax, eax
mov dword [esp + 0x82], eax
mov word [esp + 0x86], ax
movzx eax, word [esi]
cdq
mov ecx, 0x1a
idiv ecx
movzx eax, word [esi + 2]
add edx, 0x61
mov word [esp + 0x80], dx
cdq
idiv ecx
movzx eax, word [esi + 4]
add edx, 0x61
mov word [esp + 0x82], dx
cdq
idiv ecx
mov ecx, ebp
add edx, 0x61
mov word [esp + 0x84], dx
lea edx, [esp + 0x80]
push edx
call dword [sym.imp.MSVCP80.dll_public:_class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t______thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::operator_wchar_t_const__]
lea ecx, [esp + 0x38]
mov byte [esp + 0xe0], 0
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
lea ecx, [esp + 0x54]
mov dword [esp + 0xe0], 0xffffffff
call dword [sym.imp.MSVCP80.dll_public:_void___thiscall_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void_]
mov eax, 1
mov ecx, dword [esp + 0xd8]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0xc0]
xor ecx, esp
call fcn.0048e5b2
add esp, 0xd0
ret