Function at 0x422fd0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0xf4
push eax
sub esp, 8
mov dword [ebp - 0xbc], esp
sub esp, 0x20
mov dword [ebp - 0x9c], esp
push eax
mov dword [ebp - 0x6c], esp
push eax
mov dword [ebp - 0x68], esp
sub esp, 0x1c
mov dword [ebp - 0xb8], esp
sub esp, 8
mov dword [ebp - 0xdc], esp
sub esp, 8
mov dword [ebp - 0xb4], esp
sub esp, 0x14
mov dword [ebp - 0x90], esp
sub esp, 0x34
mov dword [ebp - 0xa0], esp
sub esp, 0x18
mov dword [ebp - 0x40], esp
sub esp, 8
mov dword [ebp - 0xa8], esp
mov eax, dword [0x449968]
mov dword [ebp - 0x8c], 0xb5f1b3d7
mov dword [ebp - 0x88], 0x8906b704
mov dword [ebp - 0x84], 0x8d298bcc
mov dword [ebp - 0x80], 0x812d8f38
mov dword [ebp - 0x7c], 0x858283e7
mov byte [ebp - 0x78], 0
mov dword [ebp - 0x64], 0
mov ecx, dword [ebp - 0x64]
cmp ecx, 0x14
ja 0x4230c0
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [ebp - 0x64]
mov edx, dword [ebp - 0x64]
movzx edx, byte [ebp + edx - 0x8c]
lea esi, [ecx + 0x99]
and esi, edx
add ecx, edx
add esi, esi
sub ecx, esi
add ecx, 0x4ad28a99
mov dword [ebp - 0x38], ecx
mov ecx, dword [ebp - 0x38]
add cl, 0xd7
mov edx, dword [ebp - 0x64]
mov byte [ebp + edx - 0x8c], cl
inc dword [ebp - 0x64]
mov ecx, dword [ebp - 0x64]
cmp ecx, 0x15
jb 0x423080
lea edi, [ebp - 0x70]
lea esi, [ebp - 0x8c]
push edi
push 0
push 0
push 9
push esi
push 0
call eax
mov ebx, dword [ebp - 0x70]
test ebx, ebx
jns 0x4230e3
mov eax, 0xffffffff
jmp 0x4230e6
lea eax, [ebx + ebx]
push eax
call fcn.0040a300
add esp, 4
mov dword [ebp - 0x3c], eax
mov eax, dword [0x449968]
mov dword [ebp - 0x8c], 0xc6b8f896
mov dword [ebp - 0x88], 0xc275c477
mov dword [ebp - 0x84], 0xce60c08f
mov dword [ebp - 0x80], 0xca6ccc73
mov dword [ebp - 0x7c], 0xd6c9c8a6
mov byte [ebp - 0x78], 0
mov dword [ebp - 0x64], 0
mov ecx, dword [ebp - 0x64]
cmp ecx, 0x14
ja 0x423174
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [ebp - 0x64]
mov edx, dword [ebp - 0x64]
movzx edx, byte [ebp + edx - 0x8c]
add ecx, 0x32d7595d
xor ecx, edx
mov dword [ebp - 0x38], ecx
mov ecx, dword [ebp - 0x38]
add cl, 0x5a
mov edx, dword [ebp - 0x64]
mov byte [ebp + edx - 0x8c], cl
inc dword [ebp - 0x64]
mov ecx, dword [ebp - 0x64]
cmp ecx, 0x15
jb 0x423140
push edi
push ebx
push dword [ebp - 0x3c]
push 9
push esi
push 0
call eax
mov dword [ebp - 0x8c], 0xf5218bc4
mov dword [ebp - 0x88], 0xf15bf769
mov dword [ebp - 0x84], 0xfd60f361
mov dword [ebp - 0x80], 0xf9feff50
lea esi, [ebp - 0x7c]
mov byte [ebp - 0x7c], 0
mov dword [ebp - 0x64], 0
mov eax, dword [ebp - 0x64]
cmp eax, 0x10
ja 0x4231f2
nop
nop
nop
nop
nop
mov eax, dword [ebp - 0x64]
mov ecx, dword [ebp - 0x64]
movzx ecx, byte [ebp + ecx - 0x8c]
add eax, 0xade7ee3d
xor eax, ecx
mov dword [ebp - 0x38], eax
mov eax, dword [ebp - 0x38]
add al, 0x4b
mov ecx, dword [ebp - 0x64]
mov byte [ebp + ecx - 0x8c], al
inc dword [ebp - 0x64]
mov eax, dword [ebp - 0x64]
cmp eax, 0x11
jb 0x4231c0
lea edi, [ebp - 0x100]
lea edx, [ebp - 0x8c]
mov ebx, edx
mov ecx, 4
xchg esi, ebx
rep movsd dword es:[edi], dword [esi]
xchg esi, ebx
lea edi, [ebp - 0xf0]
xor ecx, ecx
xchg esi, esi
rep movsw word es:[edi], word [esi]
xchg esi, esi
mov dword [ebp - 0x38], 0x6ac04c7
mov dword [ebp - 0x34], 0xaaa0894
mov dword [ebp - 0x30], 0xe9f0ca4
mov dword [ebp - 0x2c], 0xf232f0ab
mov dword [ebp - 0x28], 0xf65bf452
mov dword [ebp - 0x24], 0xfa6bf856
mov dword [ebp - 0x20], 0xfefdfc62
mov dword [ebp - 0x64], 0
mov ecx, dword [ebp - 0x64]
cmp ecx, 0x1b
ja 0x4232a4
nop
nop
nop
nop
nop
nop
mov ecx, dword [ebp - 0x64]
mov esi, dword [ebp - 0x64]
movzx esi, byte [ebp + esi - 0x38]
lea edi, [ecx + esi]
add edi, 0x85009673
add ecx, 0x85009673
not esi
or ecx, esi
sub esi, ecx
lea ecx, [edi + esi*2]
mov dword [ebp - 0x8c], ecx
mov ecx, dword [ebp - 0x8c]
add cl, 0x90
mov esi, dword [ebp - 0x64]
mov byte [ebp + esi - 0x38], cl
inc dword [ebp - 0x64]
mov ecx, dword [ebp - 0x64]
cmp ecx, 0x1c
jb 0x423260
lea esi, [ebp - 0x38]
mov edi, edx
mov ecx, 7
xchg esi, esi
rep movsd dword es:[edi], dword [esi]
xchg esi, esi
lea edi, [ebp - 0x70]
lea esi, [ebp - 0x1c]
xor ecx, ecx
xchg esi, esi
rep movsw word es:[edi], word [esi]
xchg esi, esi
mov dword [ebp - 0x38], 0xe30be528
mov dword [ebp - 0x34], 0xef01e11f
mov dword [ebp - 0x30], 0xeb14ed1f
mov dword [ebp - 0x2c], 0xf726e904
mov dword [ebp - 0x28], 0xf33cf528
lea esi, [ebp - 0x24]
mov word [ebp - 0x24], 0xf1f0
mov dword [ebp - 0x22], 0
mov byte [ebp - 0x1e], 0
mov dword [ebp - 0x10], 0
mov ecx, dword [ebp - 0x10]
cmp ecx, 0x1a
ja 0x42333e
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [ebp - 0x10]
mov edi, dword [ebp - 0x10]
movzx edi, byte [ebp + edi - 0x38]
add ecx, 0x3411c5a2
xor ecx, edi
mov dword [ebp - 0x64], ecx
mov ecx, dword [ebp - 0x64]
add cl, 0xba
mov edi, dword [ebp - 0x10]
mov byte [ebp + edi - 0x38], cl
inc dword [ebp - 0x10]
mov ecx, dword [ebp - 0x10]
cmp ecx, 0x1b
jb 0x423310
lea ebx, [ebp - 0x64]
lea eax, [ebp - 0x38]
mov edi, ebx
mov ecx, 5
xchg esi, eax
rep movsd dword es:[edi], dword [esi]
xchg esi, eax
lea edi, [ebp - 0x50]
mov ecx, 1
xchg esi, esi
rep movsw word es:[edi], word [esi]
xchg esi, esi
mov eax, dword [ebp - 0xbc]
lea ecx, [ebp - 0x100]
mov dword [eax], ecx
mov dword [eax + 4], edx
mov dword [eax + 8], ebx
mov eax, dword [ebp - 0xb8]
add eax, 0x17
mov dword [ebp - 0xd8], eax
mov eax, dword [ebp - 0x3c]
add eax, 2
mov dword [ebp - 0xa4], eax
mov ebx, dword [ebp - 0x9c]
mov eax, ebx
add eax, 2
mov dword [ebp - 0xf0], eax
mov eax, dword [ebp - 0x90]
add eax, 2
mov dword [ebp - 0xd4], eax
mov eax, dword [ebp - 0xa0]
mov ecx, eax
add ecx, 2
mov dword [ebp - 0xc4], ecx
mov ecx, dword [ebp - 0x40]
mov edx, ecx
add edx, 2
mov dword [ebp - 0xc0], edx
add eax, 0x2e
mov dword [ebp - 0xd0], eax
lea eax, [ecx + 0x12]
mov dword [ebp - 0xcc], eax
xor ecx, ecx
mov dword [ebp - 0x98], 0
xor eax, eax
cmp ecx, 0xc
setne al
jmp dword [eax*4 + 0x445f20]