Function at 0x422a00
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x148
cmp byte [ebp + 0x18], 0
je 0x422ac7
mov edi, dword [ebp + 0x10]
mov esi, dword [ebp + 8]
lea ebx, [esp + 0x20]
push 0x120
push 0
push ebx
call fcn.0040cd50
add esp, 0xc
mov ecx, esi
push 0
push 0
push 0x120
push ebx
push edi
push dword [ebp + 0xc]
call fcn.0043e470
test eax, eax
js 0x422ac7
mov dword [esp + 4], 0x7a73786a
mov byte [esp + 8], 0x9c
mov word [esp + 9], 0
mov byte [esp + 0xb], 0
mov eax, 0x46ff79da
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax - 0x46ff79d6]
xor ecx, eax
lea edx, [ecx + ecx]
and edx, 0x804317a
xor ecx, 0x9d029ebd
mov esi, edx
and esi, ecx
xor ecx, edx
lea ecx, [ecx + esi*2]
inc cl
mov byte [esp + eax - 0x46ff79d6], cl
inc eax
cmp eax, 0x46ff79e2
jne 0x422a70
cmp byte [esp + 0x3f], 0
js 0x422ace
lea eax, [esp + 0x28]
lea ecx, [esp + 4]
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00406040
add esp, 0xc
mov al, 1
mov dword [esp + 0x14], eax
jmp 0x422b2b
xor eax, eax
jmp 0x422ee0
mov ebx, dword [esp + 0x28]
mov esi, dword [esp + 0x2c]
mov eax, ebx
or eax, esi
je 0x422b23
mov edi, dword [esp + 0x30]
inc edi
push edi
call fcn.0040ccd0
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.0043e470
test eax, eax
setns al
mov dword [esp + 0x14], eax
js 0x422b18
lea eax, [esp + 4]
push edi
push eax
push dword [ebp + 0x14]
call fcn.00406040
add esp, 0xc
push edi
call fcn.0040cce0
add esp, 4
jmp 0x422b2b
mov dword [esp + 0x14], 0
mov dword [esp + 4], 0x3226dc0e
mov word [esp + 8], 0xbf23
mov dword [esp + 0xa], 0
mov byte [esp + 0xe], 0
mov eax, 0x1f
mov ecx, 0xe0
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + eax - 0x1b]
mov edx, ecx
xor edx, eax
and edx, esi
xor edx, eax
add dl, 0x65
mov byte [esp + eax - 0x1b], dl
inc eax
dec ecx
cmp eax, 0x2a
jne 0x422b60
cmp byte [esp + 0x11f], 0
js 0x422ba1
lea eax, [esp + 0x108]
lea ecx, [esp + 4]
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00406040
add esp, 0xc
mov bl, 1
jmp 0x422bfd
mov ebx, dword [esp + 0x108]
mov esi, dword [esp + 0x10c]
mov eax, ebx
or eax, esi
je 0x422bfb
mov edi, dword [esp + 0x110]
inc edi
push edi
call fcn.0040ccd0
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.0043e470
test eax, eax
setns bl
js 0x422bf0
lea eax, [esp + 4]
push edi
push eax
push dword [ebp + 0x14]
call fcn.00406040
add esp, 0xc
push edi
call fcn.0040cce0
add esp, 4
jmp 0x422bfd
xor ebx, ebx
mov eax, dword [esp + 0x14]
and al, bl
mov dword [esp + 0x14], eax
mov dword [esp + 4], 0xadafaabc
mov dword [esp + 8], 0x52a5a2b9
mov byte [esp + 0xc], 0xdc
mov dword [esp + 0xd], 0
mov eax, 0x4f
mov ecx, 0xb0
nop
nop
movzx esi, byte [esp + eax - 0x4b]
mov edi, ecx
or edi, esi
lea edx, [esi + esi]
not edx
add edx, esi
or edx, eax
and edx, edi
mov bl, 0x74
sub bl, dl
mov byte [esp + eax - 0x4b], bl
inc eax
dec ecx
cmp eax, 0x5c
jne 0x422c30
cmp byte [esp + 0x57], 0
js 0x422c73
lea eax, [esp + 0x40]
lea ecx, [esp + 4]
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00406040
add esp, 0xc
mov bl, 1
jmp 0x422cc6
mov ebx, dword [esp + 0x40]
mov esi, dword [esp + 0x44]
mov eax, ebx
or eax, esi
je 0x422cc4
mov edi, dword [esp + 0x48]
inc edi
push edi
call fcn.0040ccd0
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.0043e470
test eax, eax
setns bl
js 0x422cb9
lea eax, [esp + 4]
push edi
push eax
push dword [ebp + 0x14]
call fcn.00406040
add esp, 0xc
push edi
call fcn.0040cce0
add esp, 4
jmp 0x422cc6
xor ebx, ebx
mov eax, dword [esp + 0x14]
and al, bl
mov dword [esp + 0x14], eax
mov dword [esp + 4], 0xb7aab8a8
mov byte [esp + 8], 0x1c
mov dword [esp + 9], 0
mov word [esp + 0xd], 0
xor eax, eax
xor ecx, ecx
mov esi, eax
and esi, 0x14
mov edx, ecx
xor edx, 0x3a
add edx, esi
xor dl, byte [esp + ecx + 4]
add dl, 0xde
mov byte [esp + ecx + 4], dl
inc ecx
add eax, 2
cmp ecx, 0xb
jne 0x422cf0
cmp byte [esp + 0x6f], 0
js 0x422d30
lea eax, [esp + 0x58]
lea ecx, [esp + 4]
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00406040
add esp, 0xc
mov bl, 1
jmp 0x422d83
mov ebx, dword [esp + 0x58]
mov esi, dword [esp + 0x5c]
mov eax, ebx
or eax, esi
je 0x422d81
mov edi, dword [esp + 0x60]
inc edi
push edi
call fcn.0040ccd0
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.0043e470
test eax, eax
setns bl
js 0x422d76
lea eax, [esp + 4]
push edi
push eax
push dword [ebp + 0x14]
call fcn.00406040
add esp, 0xc
push edi
call fcn.0040cce0
add esp, 4
jmp 0x422d83
xor ebx, ebx
mov eax, dword [esp + 0x14]
and al, bl
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x120]
mov ecx, dword [esp + 0x124]
mov dword [esp + 4], 0x1a16ef1b
mov dword [esp + 8], 0x1cef1c12
mov dword [esp + 0xc], 0x7903f3f3
mov word [esp + 0x10], 0
mov edx, 0x94b43e69
nop
movzx ebx, byte [esp + edx + 0x6b4bc19b]
xor ebx, edx
mov esi, ebx
not esi
and esi, 0x19
and ebx, 0xe6
sub ebx, esi
add bl, 0xc
mov byte [esp + edx + 0x6b4bc19b], bl
inc edx
cmp edx, 0x94b43e77
jne 0x422dc0
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], ecx
fild qword [esp + 0x18]
sub esp, 0x10
lea eax, [esp + 0x14]
mov dword [esp + 4], eax
mov eax, dword [ebp + 0x14]
mov dword [esp], eax
fstp qword [esp + 8]
call fcn.00406090
add esp, 0x10
mov esi, eax
movzx eax, byte [esp + 0x78]
mov dword [esp + 4], 0xa49ba6ab
mov dword [esp + 8], 0xbbbd8a93
mov word [esp + 0xc], 0x238f
mov dword [esp + 0xe], 0
mov ecx, 0x57580a0b
movzx edx, byte [esp + ecx - 0x57580a07]
mov edi, ecx
and edi, edx
add edx, ecx
add edi, edi
mov ebx, edx
sub ebx, edi
and edx, 1
xor ebx, 1
lea edx, [ebx + edx*2]
add dl, 0xc8
mov byte [esp + ecx - 0x57580a07], dl
inc ecx
cmp ecx, 0x57580a19
jne 0x422e40
push eax
lea ebx, [esp + 8]
push ebx
push dword [ebp + 0x14]
call fcn.00406120
add esp, 0xc
mov edi, eax
movzx eax, byte [esp + 0x79]
mov dword [esp + 4], 0x10a0b04
mov dword [esp + 8], 0x90c0231
mov word [esp + 0xc], 0x971f
mov dword [esp + 0xe], 0
mov byte [esp + 0x12], 0
or edi, esi
xor ecx, ecx
mov edx, ecx
add dl, 0xa5
xor dl, byte [esp + ecx + 4]
add dl, 0xc7
mov byte [esp + ecx + 4], dl
inc ecx
cmp ecx, 0xf
jne 0x422eb0
push eax
push ebx
push dword [ebp + 0x14]
call fcn.00406120
add esp, 0xc
or edi, eax
sete al
mov ecx, dword [esp + 0x14]
and cl, al
mov eax, ecx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret