Function at 0x40c310
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x58
push ebx
push ebp
push esi
push edi
push 0xa0000
mov byte [esp + 0x44], 0
mov byte [esp + 0x45], 0
mov byte [esp + 0x46], 0
mov byte [esp + 0x47], 0
mov byte [esp + 0x48], 0
call dword [sym.imp.msvcrt.dll_malloc]
mov esi, eax
xor eax, eax
add esp, 4
test esi, esi
mov ecx, 0x28000
mov edi, esi
mov dword [esp + 0x2c], esi
rep stosd dword es:[edi], eax
jne 0x40c35e
pop edi
pop esi
pop ebp
or eax, 0xffffffff
pop ebx
add esp, 0x58
ret
mov ebp, dword [esp + 0x70]
movzx eax, byte [ebp + 1]
movzx eax, byte [eax + str.3s_ckv_6n.f]
movzx ecx, byte [ebp]
xor eax, ecx
mov dword [esp + 0x1c], eax
xor edx, edx
jmp 0x40c380
mov eax, dword [esp + 0x1c]
nop
mov ecx, edx
xor ecx, eax
movzx eax, byte [ecx + str.3s_ckv_6n.f]
mov dword [esp + 0x18], eax
xor eax, eax
mov dword [esp + 0x70], eax
xor edi, edi
xor eax, dword [esp + 0x18]
xor eax, edx
add eax, edi
lea eax, [eax + eax*4]
shl eax, 1
movzx ecx, byte [eax + esi]
inc ecx
cmp ecx, 0xa
jae 0x40c3b4
lea ebx, [eax + ecx]
mov byte [ebx + esi], dl
mov byte [eax + esi], cl
mov eax, dword [esp + 0x70]
inc eax
add edi, 0x100
cmp edi, 0x10000
mov dword [esp + 0x70], eax
jl 0x40c397
inc edx
cmp edx, 0x100
jl 0x40c37b
push 0x4000000
call dword [sym.imp.msvcrt.dll_malloc]
mov edx, eax
xor eax, eax
add esp, 4
test edx, edx
mov ecx, 0x1000000
mov edi, edx
mov dword [esp + 0x14], edx
rep stosd dword es:[edi], eax
jne 0x40c405
pop edi
pop esi
pop ebp
or eax, 0xffffffff
pop ebx
add esp, 0x58
ret
xor edi, edi
xor ecx, ecx
mov dword [esp + 0x70], ecx
lea ecx, [ecx]
and ecx, 0x1fffff0
mov edx, edi
and edx, 7
or ecx, edx
or ecx, 8
xor edx, edx
mov eax, ecx
shr eax, 3
and eax, 0x3fc000
mov ebx, ecx
and ebx, 0x3fc000
xor eax, ebx
shr eax, 1
mov ebx, ecx
and ebx, 0x1fe000
xor eax, ebx
shr eax, 8
mov ebx, ecx
and ebx, 0x1fe0
xor eax, ebx
shr eax, 5
shl ecx, 8
or ecx, eax
mov al, byte [eax + 0x42b2c0]
mov byte [esp + edx + 0x48], al
inc edx
cmp edx, 5
jl 0x40c422
movzx edx, byte [esp + 0x49]
movzx eax, byte [esp + 0x4c]
xor ecx, ecx
mov ch, byte [esp + 0x48]
or ecx, edx
mov edx, dword [esp + 0x14]
shl ecx, 8
or ecx, eax
mov dword [edx + ecx*4], edi
mov ecx, dword [esp + 0x70]
add ecx, 2
inc edi
cmp ecx, 0x2000000
mov dword [esp + 0x70], ecx
jl 0x40c410
movzx eax, byte [ebp + 1]
movzx eax, byte [eax + str.3s_ckv_6n.f]
movzx ecx, byte [ebp]
xor eax, ecx
xor edx, edx
mov dword [esp + 0x38], eax
mov dword [esp + 0x28], edx
jmp 0x40c4c0
mov edx, dword [esp + 0x28]
mov edi, edi
mov eax, edx
or eax, 0x10000
mov edi, edx
shr eax, 8
and edi, 0xff
xor ebx, ebx
movzx ecx, byte [edi + 0x42afc0]
movzx edi, byte [eax + 0x42b0c0]
xor ecx, edi
mov edi, eax
and eax, 1
shl eax, 8
xor eax, ecx
mov cl, byte [ecx + 0x42b2c0]
shr edi, 1
mov byte [esp + ebx + 0x50], cl
inc ebx
cmp ebx, 5
jl 0x40c4d4
movzx ecx, byte [ebp + 3]
mov ebx, edx
mov byte [esp + 0x41], dl
movzx edx, byte [ebp + 4]
movzx eax, byte [edx + str.3s_ckv_6n.f]
movzx edx, byte [ebp]
xor eax, ecx
mov dword [esp + 0x1c], eax
movzx eax, byte [edx + str.3s_ckv_6n.f]
shr ebx, 8
mov dword [esp + 0x18], eax
xor eax, eax
mov byte [esp + 0x40], bl
mov dword [esp + 0x24], eax
jmp 0x40c541
mov eax, dword [esp + 0x24]
mov bl, byte [esp + 0x40]
xor ecx, ecx
mov cl, al
mov dword [esp + 0x20], 0
mov dl, byte [ecx + str.3s_ckv_6n.f]
shl ecx, 8
mov edi, ecx
movzx ecx, byte [esp + 0x41]
xor dl, bl
mov bl, byte [esp + 0x18]
add ecx, edi
xor al, bl
mov bl, byte [esp + 0x1c]
lea ecx, [ecx + ecx*4]
movzx ecx, byte [esi + ecx*2]
xor al, dl
xor bl, al
test ecx, ecx
mov byte [esp + 0x5c], bl
mov dword [esp + 0x34], edi
mov dword [esp + 0x3c], ecx
jbe 0x40c74b
movzx edi, byte [esp + 0x50]
xor ecx, ecx
mov cl, dl
sub ecx, edi
add ecx, 0x100
test ch, 1
setne dl
dec dl
mov dword [esp + 0x30], ecx
mov cl, byte [esp + 0x51]
movzx edi, al
and edx, 0xff
sub dl, cl
mov cl, bl
sub cl, byte [esp + 0x54]
mov byte [esp + 0x70], dl
mov byte [esp + 0x13], cl
movzx ecx, byte [esp + 0x30]
shl ecx, 8
mov dword [esp + 0x30], ecx
jmp 0x40c5e0
mov dl, byte [esp + 0x70]
mov bl, byte [esp + 0x5c]
lea ebx, [ebx]
movzx eax, byte [esp + 0x41]
add eax, dword [esp + 0x34]
mov ecx, dword [esp + 0x20]
lea eax, [eax + eax*4]
lea eax, [ecx + eax*2]
mov cl, byte [eax + esi + 1]
mov al, byte [esp + 0x38]
xor al, cl
mov byte [esp + 0x61], al
mov al, dl
add al, cl
mov cl, byte [esp + 0x13]
mov edx, dword [esp + 0x30]
movzx esi, al
mov byte [esp + 0x4c], cl
movzx ecx, cl
or esi, edx
mov edx, dword [esp + 0x14]
shl esi, 8
or ecx, esi
mov edx, dword [edx + ecx*4]
mov eax, edx
shr eax, 8
mov byte [esp + 0x43], al
mov al, bl
mov bl, byte [edi + str.3s_ckv_6n.f]
mov ecx, edx
shr ecx, 0x10
xor al, cl
mov byte [esp + 0x44], cl
movzx ecx, byte [ebp + 3]
mov cl, byte [ecx + str.3s_ckv_6n.f]
xor al, bl
mov bl, byte [ebp + 2]
xor cl, bl
xor cl, al
movzx eax, al
mov al, byte [eax + str.3s_ckv_6n.f]
xor al, cl
xor al, byte [esp + 0x43]
xor ecx, ecx
mov cl, bl
mov bl, byte [ebp + 1]
mov byte [esp + 0x42], dl
mov cl, byte [ecx + str.3s_ckv_6n.f]
xor cl, bl
mov bl, byte [esp + 0x61]
xor cl, al
movzx eax, al
mov al, byte [eax + str.3s_ckv_6n.f]
xor al, cl
xor al, bl
cmp al, dl
jne 0x40c6a3
lea ecx, [esp + 0x40]
push ecx
push ebp
call fcn.0040c7b0
add esp, 8
test eax, eax
je 0x40c775
mov al, byte [esp + 0x4c]
dec al
mov bl, byte [edi + str.3s_ckv_6n.f]
xor edx, edx
mov dl, al
mov eax, dword [esp + 0x14]
or edx, esi
mov edx, dword [eax + edx*4]
mov eax, edx
shr eax, 8
mov byte [esp + 0x43], al
mov al, byte [esp + 0x5c]
mov ecx, edx
shr ecx, 0x10
xor al, cl
mov byte [esp + 0x44], cl
movzx ecx, byte [ebp + 3]
mov cl, byte [ecx + str.3s_ckv_6n.f]
xor al, bl
mov bl, byte [ebp + 2]
xor cl, bl
xor cl, al
movzx eax, al
mov al, byte [eax + str.3s_ckv_6n.f]
xor al, cl
xor al, byte [esp + 0x43]
xor ecx, ecx
mov cl, bl
mov bl, byte [ebp + 1]
mov byte [esp + 0x42], dl
mov cl, byte [ecx + str.3s_ckv_6n.f]
xor cl, bl
mov bl, byte [esp + 0x61]
xor cl, al
movzx eax, al
mov al, byte [eax + str.3s_ckv_6n.f]
xor al, cl
xor al, bl
cmp al, dl
jne 0x40c732
lea ecx, [esp + 0x40]
push ecx
push ebp
call fcn.0040c7b0
add esp, 8
test eax, eax
je 0x40c775
mov eax, dword [esp + 0x20]
mov ecx, dword [esp + 0x3c]
mov esi, dword [esp + 0x2c]
inc eax
cmp eax, ecx
mov dword [esp + 0x20], eax
jb 0x40c5d2
mov eax, dword [esp + 0x24]
inc eax
cmp eax, 0x100
mov dword [esp + 0x24], eax
jb 0x40c539
mov eax, dword [esp + 0x28]
inc eax
cmp eax, 0x10000
mov dword [esp + 0x28], eax
jb 0x40c4ba
jmp 0x40c779
mov esi, dword [esp + 0x2c]
mov edx, dword [esp + 0x40]
mov al, byte [esp + 0x44]
push esi
mov esi, dword [sym.imp.msvcrt.dll_free]
mov dword [ebp], edx
mov byte [ebp + 4], al
call esi
mov ecx, dword [esp + 0x18]
push ecx
call esi
add esp, 8
pop edi
pop esi
pop ebp
xor eax, eax
pop ebx
add esp, 0x58
ret