Function at 0x406220
Capabilities:
Encode data using xor

Disassembly:
cmp byte [ebp - 0xc], 0
je 0x4061c6
mov eax, dword [ebp - 0x18]
xor edx, edx
jmp 0x4061d9
movsx eax, word [ebp - 0x40]
cmp eax, dword [ebp - 0x18]
jg 0x4061d2
mov eax, dword [ebp - 0x18]
movsx edx, word [ebp - 0x40]
sub edx, dword [ebp - 0x18]
mov dword [ebp - 0x24], eax
mov dword [ebp - 0x28], edx
mov esi, dword [ebp - 0x10]
mov edi, dword [ebp - 4]
lea ebx, [ebp - 0x3d]
cmp byte [ebp - 0x3e], 0
je 0x4061f6
cmp esi, dword [ebp + 8]
jne 0x4061f6
mov al, 0x2d
stosb byte es:[edi], al
lodsb al, byte [esi]
cmp al, 0x23
je 0x406222
cmp al, 0x30
je 0x406222
cmp al, 0x2e
je 0x4061f6
cmp al, 0x2c
je 0x4061f6
cmp al, 0x27
je 0x406229
cmp al, 0x22
je 0x406229
cmp al, 0x45
je 0x406237
cmp al, 0x65
je 0x406237
cmp al, 0x3b
je 0x40626e
or al, al
je 0x40626e
stosb byte es:[edi], al
mov esi, 0x394512bd
adc al, byte [ebp + 0x39]
xor esi, 0x9e17678
loope 0x406234
mov ebx, 0x39743284
xor ebx, 0x65cfddb6
xor ebx, esi
mov edi, 0x2404d848
iretd
mov edi, 0x2404d848
mov ecx, 0x2080416
xor edi, ecx
xor ebx, edi
mov ecx, 0x4a5386c1
xor ebx, ecx
mov edx, ebx
mov esi, edx
mov ecx, 0
xor ecx, esi
mov edi, 0x2a09ad22
xor edi, 0x2a09ad6b
sub ecx, edi
add ecx, 0xffffffff
mov eax, dword [ecx + 0x4a]
mov edx, 0x156d9106
mov ebx, 0x574208ea
insd dword es:[edi], dx
adc eax, 0x4208eabb
push edi
xor ebx, edx
mov ecx, 0x34295a7a
mov edi, 0x6bb5dc23
xor edi, ecx
xor edi, ebx
push edi
pop ecx
mov ebx, ecx
xor ebx, 0xffffffff
and ebx, 0xffffffff
and ecx, 0
or ecx, ebx
and ecx, 0x1db31fb5
and edi, 0xe24ce04a
or edi, ecx
mov edx, edi
mov ecx, edx
mov edx, 0xfffffffc
add esp, edx
mov dword [esp], ecx
mov ecx, esp
mov esi, 0
xor esi, ecx
add esp, 0xfffffffc
mov edx, esp
mov dword [edx], esi
push 0x704586c1
mov edi, 0x5e1d6552
pop edx
xor edi, edx
mov ebx, 0x48a3e8e2
xor edi, ebx
xor edi, 0xd0669d4
mov ebx, edi
mov ecx, ebx
xor ecx, 0xffffffff
and ecx, 0xffffffff
and ebx, 0
or ebx, ecx
and ebx, 0x6bfd62e5
and edi, 0x94029d1a
or edi, ebx
mov ecx, 0xfffffffc
add esp, ecx
mov esi, esp
mov ebx, esi
mov dword [ebx], edi
push 0x7d413322
mov ebx, 0x567d25a8
pop edi
xor ebx, edi
push ebx
mov ecx, 0x53cc5783
xor ecx, 0x78f04109
pop esi
xor ecx, esi
mov edx, 0
mov esi, 0
xor edx, esi
mov esi, 0x75db4cbf
mov edi, 0x75dbd2bf
xor edi, esi
xor edx, edi
xor ecx, edx
mov esi, 0xfffffffc
add esp, esi
push esp
pop edi
mov dword [edi], ecx
mov ebx, 0x30040098
mov ecx, 0x7188603
xor ebx, ecx
mov ecx, 0x11a6826f
xor ebx, ecx
xor ebx, 0x22f5b298
mov edx, 0x74f1f143
mov ecx, 0x55cad7aa
xor ecx, edx
xor ebx, ecx
mov edx, 0x2c562a04
xor ebx, edx
xor ebx, 0x962aa81
push ebx
pop edx
mov ecx, 4
sub esp, ecx
mov dword [esp], edx
call eax
pop ebx
mov eax, 0x9402042
mov ecx, 0x10a00020
xor eax, ecx
mov ebx, 0x10804
mov edi, 0x100090
xor ebx, edi
xor eax, ebx
mov ebx, 0x7e95d916
xor ebx, 0x4395ee8d
xor eax, ebx
mov esi, 0xb27bcc0
xor eax, esi
xor eax, 0x2fd6a088
mov edx, 0x6cd402a0
mov edi, 0x2226002
xor edx, edi
mov ecx, 0x7e79fc5b
xor ecx, 0x509012dd
xor ecx, edx
push 0x58ad6e26
mov edx, 0x71b0dc
pop edi
xor edx, edi
mov ebx, 0x2284adf8
mov esi, 0x3a079fa1
xor esi, ebx
xor esi, edx
xor esi, ecx
push 0x429aacc5
mov ebx, 0x60116c61
pop ecx
xor ebx, ecx
mov edi, 0x40860948
mov ecx, 0x14180014
xor edi, ecx
xor edi, ebx
mov ebx, 0x20c58612
mov ecx, 0x4a085900
xor ebx, ecx
mov edx, 0x1c908803
mov ecx, 0x81230
xor edx, ecx
xor edx, ebx
xor edx, edi
xor ebx, ebx
add ebx, eax
mov edi, 0
xor edi, ebx
mov ecx, 0xfffffffc
add esp, ecx
mov dword [esp], edi
mov ecx, 0x47887743
mov ebx, 0xb87788bf
xor ebx, ecx
add esp, ebx
mov ecx, 0
xor ecx, esp
xor edi, edi
add edi, ecx
mov dword [edi], edx
xor eax, eax
mov al, byte [esi]
add edx, eax
mov al, byte [edx]
pop edx
mov byte [esi], al
dec esi
pop eax
push 0xfa4fc270
mov edi, 0x5b03d8f
pop ebx
xor edi, ebx
add eax, edi
xor ecx, ecx
add ecx, eax
and ecx, eax
jne 0x40643d
push 0x40287774
mov ebx, 0x10244958
pop edx
xor ebx, edx
push ebx
mov ebx, 0x48bd1c45
mov edi, 0x67f409b7
xor edi, ebx
pop ecx
xor edi, ecx
mov edx, 0xe622673
mov eax, 0x50673442
xor eax, edx
mov ebx, 0x132d8f4a
xor ebx, 0x322debc6
xor eax, ebx
xor eax, edi
call eax
pop ecx
pop ecx
ret