Function at 0x422fe0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x160
movzx ebx, byte [ebp + 0x18]
mov ecx, dword [ebp + 8]
xor eax, eax
test bl, bl
setne al
lea eax, [eax*8 + 0x120]
lea edx, [esp + 0x34]
push 0
push 0
push eax
push edx
push dword [ebp + 0x10]
push dword [ebp + 0xc]
call fcn.0043eec0
mov ecx, eax
xor eax, eax
test ecx, ecx
js 0x423570
mov dword [esp], 0x3239343e
mov byte [esp + 4], 0x88
mov dword [esp + 5], 0
mov dword [esp + 8], 0
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax]
mov esi, eax
and esi, 1
mov edx, eax
and edx, 2
mov edi, edx
xor edi, 2
imul edi, esi
or esi, 2
imul esi, edx
mov edx, eax
xor edx, 0xe2634163
add edx, edi
add edx, esi
mov esi, ecx
and esi, edx
add esi, esi
sub edx, esi
add dl, cl
add dl, 0x11
mov byte [esp + eax], dl
inc eax
cmp eax, 0xc
jne 0x423050
cmp byte [esp + 0x53], 0
js 0x4230b0
lea eax, [esp + 0x3c]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00406260
add esp, 0xc
mov al, 1
mov dword [esp + 0x24], eax
jmp 0x42310f
mov esi, dword [esp + 0x3c]
mov ebx, dword [esp + 0x40]
mov eax, esi
or eax, ebx
je 0x423103
mov edi, dword [esp + 0x44]
inc edi
push edi
call fcn.0040cc60
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push edi
mov edi, eax
push eax
push ebx
push esi
call fcn.0043eec0
test eax, eax
setns al
mov dword [esp + 0x24], eax
js 0x4230f8
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00406260
add esp, 0xc
push edi
call fcn.0040cc70
add esp, 4
jmp 0x42310b
mov dword [esp + 0x24], 0
movzx ebx, byte [ebp + 0x18]
movzx eax, bl
mov dword [esp + 0x1c], eax
lea eax, [eax*8 + 0xe8]
mov dword [esp], 0x5a52a842
mov word [esp + 4], 0xcda9
mov dword [esp + 6], 0
mov word [esp + 0xa], 0
mov ecx, 0x267a90d2
mov edx, 0x59856f2d
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + ecx - 0x267a90d2]
mov ebx, edx
and ebx, 0x58040004
mov esi, ecx
and esi, 0x2200803b
or esi, ebx
xor esi, edi
mov ebx, esi
not ebx
xor esi, 0x3b
and ebx, 1
add esi, 0x1b
or esi, 1
sub ebx, esi
mov byte [esp + ecx - 0x267a90d2], bl
inc ecx
dec edx
cmp ecx, 0x267a90de
jne 0x423150
lea ecx, [esp + eax]
add ecx, 0x34
cmp byte [esp + eax + 0x4b], 0
js 0x4231b3
mov eax, esp
push ecx
push eax
push dword [ebp + 0x14]
call fcn.00406260
add esp, 0xc
mov al, 1
mov dword [esp + 0x20], eax
jmp 0x42320a
mov ebx, dword [ecx]
mov esi, dword [ecx + 4]
mov eax, ebx
or eax, esi
je 0x423202
mov edi, dword [ecx + 8]
inc edi
push edi
call fcn.0040cc60
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push edi
mov edi, eax
push eax
push esi
push ebx
call fcn.0043eec0
test eax, eax
setns al
mov dword [esp + 0x20], eax
js 0x4231f7
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00406260
add esp, 0xc
push edi
call fcn.0040cc70
add esp, 4
jmp 0x42320a
mov dword [esp + 0x20], 0
mov dword [esp], 0x5b595a50
mov dword [esp + 4], 0x4aa752af
mov byte [esp + 8], 0xc0
mov dword [esp + 9], 0
mov eax, 0xd2
mov ecx, 0x2d
movzx edx, byte [esp + eax - 0xd2]
mov esi, edx
not esi
mov edi, eax
and edi, esi
or esi, ecx
add edx, esi
inc edx
or edx, edi
add dl, 0xe6
mov byte [esp + eax - 0xd2], dl
inc eax
dec ecx
cmp eax, 0xdf
jne 0x423230
cmp byte [esp + 0x6b], 0
js 0x42327c
lea eax, [esp + 0x54]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00406260
add esp, 0xc
mov al, 1
mov dword [esp + 0x18], eax
jmp 0x4232d7
mov ebx, dword [esp + 0x54]
mov esi, dword [esp + 0x58]
mov eax, ebx
or eax, esi
je 0x4232cf
mov edi, dword [esp + 0x5c]
inc edi
push edi
call fcn.0040cc60
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push edi
mov edi, eax
push eax
push esi
push ebx
call fcn.0043eec0
test eax, eax
setns al
mov dword [esp + 0x18], eax
js 0x4232c4
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00406260
add esp, 0xc
push edi
call fcn.0040cc70
add esp, 4
jmp 0x4232d7
mov dword [esp + 0x18], 0
mov dword [esp], 0x417e4c74
mov byte [esp + 4], 0xe8
mov word [esp + 5], 0
mov byte [esp + 7], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x57
xor cl, byte [esp + eax]
add cl, 0x4d
mov byte [esp + eax], cl
inc eax
cmp eax, 8
jne 0x423300
cmp byte [esp + 0x83], 0
js 0x423339
lea eax, [esp + 0x6c]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00406260
add esp, 0xc
mov al, 1
mov dword [esp + 0x14], eax
jmp 0x423394
mov esi, dword [esp + 0x6c]
mov edi, dword [esp + 0x70]
mov eax, esi
or eax, edi
je 0x42338c
mov ebx, dword [esp + 0x74]
inc ebx
push ebx
call fcn.0040cc60
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push ebx
mov ebx, eax
push eax
push edi
push esi
call fcn.0043eec0
test eax, eax
setns al
mov dword [esp + 0x14], eax
js 0x423381
mov eax, esp
push ebx
push eax
push dword [ebp + 0x14]
call fcn.00406260
add esp, 0xc
push ebx
call fcn.0040cc70
add esp, 4
jmp 0x423394
mov dword [esp + 0x14], 0
mov eax, dword [esp + 0x1c]
mov ecx, dword [esp + eax*8 + 0x134]
mov dword [esp + 0x10], ecx
mov ecx, dword [esp + eax*8 + 0x138]
mov dword [esp], 0xbab2a9c5
mov dword [esp + 4], 0xc8b5c0b6
mov dword [esp + 8], 0xdb394d4d
mov word [esp + 0xc], 0
mov byte [esp + 0xe], 0
xor eax, eax
xor esi, esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + esi]
mov edx, eax
and edx, 0x10
mov edi, esi
xor edi, 0x32346ff8
add edi, edx
xor edi, ebx
mov edx, edi
and edx, 0xd8
mov ebx, edi
xor ebx, 0x27
add ebx, edi
sub ebx, edx
and edi, 0x27
add ebx, edi
inc bl
mov byte [esp + esi], bl
inc esi
add eax, 2
cmp esi, 0xf
jne 0x4233e0
mov eax, dword [esp + 0x10]
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], ecx
fild qword [esp + 0x28]
sub esp, 0x10
lea esi, [esp + 0x10]
mov dword [esp + 4], esi
mov eax, dword [ebp + 0x14]
mov dword [esp], eax
fstp qword [esp + 8]
call fcn.004062b0
add esp, 0x10
mov dword [esp + 0x1c], eax
movzx eax, byte [esp + 0x8c]
mov dword [esp], 0xe8d596a1
mov dword [esp + 4], 0xedefdad9
mov word [esp + 8], 0x71dd
mov dword [esp + 0xa], 0
mov ecx, 0x3e
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx - 0x3e]
mov ebx, edx
and ebx, ecx
add bl, bl
sub dl, bl
movzx edx, dl
add edx, ecx
add dl, 0xca
mov byte [esp + ecx - 0x3e], dl
inc ecx
cmp ecx, 0x4c
jne 0x423480
push eax
push esi
push dword [ebp + 0x14]
call fcn.00406340
add esp, 0xc
mov edi, eax
movzx eax, byte [esp + 0x8d]
mov dword [esp + 0x10], eax
mov dword [esp], 0xf3f6f5e8
mov dword [esp + 4], 0xebe8eadb
mov dword [esp + 8], 0x9f1
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx]
lea esi, [edx + edx]
not esi
add esi, edx
and esi, 0x5a9e8e82
and edx, 0x7d
or edx, esi
xor edx, ecx
xor edx, 0x13d372c2
mov esi, 0x6e85ed40
sub esi, edx
or esi, 1
add esi, edx
add esi, 0x917a12c0
mov eax, esi
and eax, 2
mov ebx, esi
or esi, 2
imul esi, eax
xor eax, 2
and ebx, 0xfd
imul ebx, eax
add edx, 0xbf
xor edx, 1
add edx, esi
add edx, ebx
mov byte [esp + ecx], dl
inc ecx
cmp ecx, 0xc
jne 0x4234e0
push dword [esp + 0x10]
lea eax, [esp + 4]
push eax
push dword [ebp + 0x14]
call fcn.00406340
add esp, 0xc
mov ecx, dword [esp + 0x24]
and cl, byte [esp + 0x20]
mov edx, dword [esp + 0x18]
and dl, byte [esp + 0x14]
and dl, cl
or edi, dword [esp + 0x1c]
or edi, eax
sete al
and al, dl
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret