Function at 0x40293e
Capabilities:
Encode data using xor

Disassembly:
push ebp
lea ebp, [esp - 0x78]
sub esp, 0xc0
push ebx
push esi
push edi
lea esi, [ebp + 0x24]
call fcn.00402845
cmp dword [ebp + 0x3c], 8
mov eax, dword [ebp + 0x28]
jae 0x402960
lea eax, [ebp + 0x28]
push eax
lea ecx, [ebp + 0x40]
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__]
push 7
pop ecx
push str.NtQuerySystemInformation
xor ebx, ebx
xor eax, eax
mov dword [ebp + 4], ebx
lea edi, [ebp + 8]
push str.ntdll
rep stosd dword es:[edi], eax
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
cmp eax, ebx
je 0x40299f
push ebx
push 0x20
lea ecx, [ebp + 4]
push ecx
push 3
call eax
push ebx
lea ecx, [ebp + 0x40]
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, [ebp + 0x40]
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_]
cmp eax, ebx
je 0x4029d7
jmp 0x4029d2
movzx ecx, word [eax]
cmp cx, 0x41
jb 0x4029d0
cmp cx, 0x5a
ja 0x4029d0
add ecx, 0x20
mov word [eax], cx
inc eax
inc eax
cmp word [eax], bx
jne 0x4029bb
mov ecx, dword [ebp + 0x54]
xor eax, eax
cmp ecx, ebx
mov dword [ebp + 0x74], ecx
jbe 0x4029f6
mov edx, eax
and edx, 3
mov dx, word [ebp + edx*2 + 4]
xor word [esi + eax*2], dx
inc eax
cmp eax, ecx
jb 0x4029e3
xor eax, eax
mov word [ebp + 0x5c], bx
lea edi, [ebp + 0x5e]
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosw word es:[edi], ax
lea edi, [ecx + ecx]
cmp edi, 0x10
mov dword [ebp + 0x6c], edi
jae 0x402a1f
push edi
lea eax, [ebp + 0x5c]
push esi
push eax
call sub.MSVCR80.dll_memcpy
add esp, 0xc
jmp 0x402a5a
shr edi, 3
cmp ebx, 7
jne 0x402a3f
mov ecx, dword [ebp + 0x6c]
mov eax, edi
imul eax, eax, 7
sub ecx, eax
push ecx
add eax, esi
call fcn.004028e4
mov word [ebp + 0x6a], ax
jmp 0x402a51
mov eax, ebx
imul eax, edi
push edi
add eax, esi
call fcn.004028e4
mov word [ebp + ebx*2 + 0x5c], ax
inc ebx
cmp ebx, 8
pop ecx
jb 0x402a22
xor ebx, ebx
push 0x48
lea eax, [ebp - 0x46]
push ebx
push eax
mov word [ebp - 0x48], bx
call sub.MSVCR80.dll_memset
lea eax, [ebp - 0x48]
push eax
lea eax, [ebp + 0x5c]
call fcn.0040288f
add esp, 0x10
lea eax, [ebp - 0x48]
mov ebx, 0x545da4
push eax
mov ecx, ebx
call dword [0x4d95ec]
cmp dword [ebp + 0x74], 3
jb 0x402ad0
xor eax, eax
lea edi, [ebp + 0x72]
stosd dword es:[edi], eax
stosw word es:[edi], ax
movzx eax, word [esi]
cdq
push 0x1a
pop ecx
idiv ecx
movzx eax, word [esi + 2]
add edx, 0x61
mov word [ebp + 0x70], dx
cdq
idiv ecx
movzx eax, word [esi + 4]
add edx, 0x61
mov word [ebp + 0x72], dx
cdq
idiv ecx
lea eax, [ebp + 0x70]
push eax
mov ecx, ebx
add edx, 0x61
mov word [ebp + 0x74], dx
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, [ebp + 0x40]
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, [ebp + 0x24]
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_]
pop edi
xor eax, eax
pop esi
inc eax
pop ebx
add ebp, 0x78
leave
ret