Function at 0x422880
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.0043e310
mov ecx, eax
xor eax, eax
test ecx, ecx
js 0x422daa
mov edi, dword [ebp + 0x14]
mov dword [esp], 0x7a73786a
mov byte [esp + 4], 0x9c
mov dword [esp + 5], 0
mov byte [esp + 9], 0
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0xda
xor cl, byte [esp + eax]
add cl, 0xbe
mov byte [esp + eax], cl
inc eax
cmp eax, 0xa
jne 0x4228f0
cmp byte [esp + 0x53], 0
js 0x422924
lea eax, [esp + 0x3c]
mov ecx, esp
push eax
push ecx
push edi
call fcn.00405de0
add esp, 0xc
mov al, 1
mov dword [esp + 0x20], eax
jmp 0x422984
mov esi, dword [esp + 0x3c]
mov ebx, dword [esp + 0x40]
mov eax, esi
or eax, ebx
je 0x422978
mov edi, dword [esp + 0x44]
inc edi
push edi
call fcn.0040c720
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push edi
mov edi, dword [ebp + 0x14]
push eax
push ebx
push esi
mov esi, eax
call fcn.0043e310
test eax, eax
setns al
mov dword [esp + 0x20], eax
js 0x42296d
mov eax, esp
push esi
push eax
push edi
call fcn.00405de0
add esp, 0xc
push esi
call fcn.0040c730
add esp, 4
jmp 0x422980
mov dword [esp + 0x20], 0
movzx ebx, byte [ebp + 0x18]
movzx ebx, bl
lea eax, [ebx*8 + 0xe8]
mov dword [esp], 0x566e6056
mov word [esp + 4], 0xc561
mov dword [esp + 6], 0
mov byte [esp + 0xa], 0
xor ecx, ecx
nop
nop
nop
nop
nop
mov edx, ecx
add dl, 0xb0
xor dl, byte [esp + ecx]
add dl, 0x90
mov byte [esp + ecx], dl
inc ecx
cmp ecx, 0xb
jne 0x4229b0
lea ecx, [esp + eax]
add ecx, 0x34
cmp byte [esp + eax + 0x4b], 0
mov dword [esp + 0x10], ebx
js 0x4229ea
mov eax, esp
push ecx
push eax
push edi
call fcn.00405de0
add esp, 0xc
mov al, 1
mov dword [esp + 0x1c], eax
jmp 0x422a46
mov ebx, dword [ecx]
mov esi, dword [ecx + 4]
mov eax, ebx
or eax, esi
je 0x422a3a
mov edi, dword [ecx + 8]
inc edi
push edi
call fcn.0040c720
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push edi
mov edi, dword [ebp + 0x14]
push eax
push esi
mov esi, eax
push ebx
call fcn.0043e310
test eax, eax
setns al
mov dword [esp + 0x1c], eax
js 0x422a2f
mov eax, esp
push esi
push eax
push edi
call fcn.00405de0
add esp, 0xc
push esi
call fcn.0040c730
add esp, 4
jmp 0x422a42
mov dword [esp + 0x1c], 0
mov ebx, dword [esp + 0x10]
mov dword [esp], 0xaba9aab0
mov dword [esp + 4], 0x5a47b2bf
mov byte [esp + 8], 0xe0
mov dword [esp + 9], 0
mov eax, 0x99aa10fa
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x6655ef06]
mov edx, ecx
and edx, eax
add dl, dl
sub cl, dl
movzx ecx, cl
add ecx, eax
add cl, 0x1e
mov byte [esp + eax + 0x6655ef06], cl
inc eax
cmp eax, 0x99aa1107
jne 0x422a70
cmp byte [esp + 0x6b], 0
js 0x422ab7
lea eax, [esp + 0x54]
mov ecx, esp
push eax
push ecx
push edi
call fcn.00405de0
add esp, 0xc
mov al, 1
mov dword [esp + 0x18], eax
jmp 0x422b17
mov ebx, dword [esp + 0x54]
mov esi, dword [esp + 0x58]
mov eax, ebx
or eax, esi
je 0x422b0b
mov edi, dword [esp + 0x5c]
inc edi
push edi
call fcn.0040c720
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push edi
mov edi, dword [ebp + 0x14]
push eax
push esi
mov esi, eax
push ebx
call fcn.0043e310
test eax, eax
setns al
mov dword [esp + 0x18], eax
js 0x422b00
mov eax, esp
push esi
push eax
push edi
call fcn.00405de0
add esp, 0xc
push esi
call fcn.0040c730
add esp, 4
jmp 0x422b13
mov dword [esp + 0x18], 0
mov ebx, dword [esp + 0x10]
mov dword [esp], 0x90a3c0c
mov byte [esp + 4], 0x90
mov dword [esp + 5], 0
mov word [esp + 9], 0
mov eax, 0x9e51b3e5
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x61ae4c1b]
mov edx, ecx
and edx, eax
add dl, dl
sub cl, dl
movzx ecx, cl
add ecx, eax
add cl, 0x87
mov byte [esp + eax + 0x61ae4c1b], cl
inc eax
cmp eax, 0x9e51b3f0
jne 0x422b40
cmp byte [esp + 0x83], 0
js 0x422b8a
lea eax, [esp + 0x6c]
mov ecx, esp
push eax
push ecx
push edi
call fcn.00405de0
add esp, 0xc
mov al, 1
mov dword [esp + 0x14], eax
jmp 0x422bed
mov esi, dword [esp + 0x6c]
mov edi, dword [esp + 0x70]
mov eax, esi
or eax, edi
je 0x422be2
mov ebx, dword [esp + 0x74]
inc ebx
push ebx
call fcn.0040c720
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.0043e310
test eax, eax
setns al
mov dword [esp + 0x14], eax
mov edi, dword [ebp + 0x14]
js 0x422bd3
mov eax, esp
push ebx
push eax
push edi
call fcn.00405de0
add esp, 0xc
push ebx
call fcn.0040c730
add esp, 4
mov ebx, dword [esp + 0x10]
jmp 0x422bed
mov dword [esp + 0x14], 0
mov edi, dword [ebp + 0x14]
mov eax, dword [esp + ebx*8 + 0x134]
mov ecx, dword [esp + ebx*8 + 0x138]
mov dword [esp], 0xbabeb7ab
mov dword [esp + 4], 0xb4a7b4a2
mov dword [esp + 8], 0x59b3a3a3
mov dword [esp + 0xc], 0
mov edx, 0x54a4398d
nop
movzx esi, byte [esp + edx - 0x54a4398d]
xor esi, edx
mov ebx, esi
or ebx, 0x3e
add ebx, esi
not esi
or esi, 0x3e
add ebx, esi
add bl, 2
mov byte [esp + edx - 0x54a4398d], bl
inc edx
cmp edx, 0x54a4399d
jne 0x422c20
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], ecx
fild qword [esp + 0x28]
sub esp, 0x10
lea eax, [esp + 0x10]
mov dword [esp + 4], eax
mov dword [esp], edi
fstp qword [esp + 8]
call fcn.00405e30
add esp, 0x10
mov dword [esp + 0x10], eax
movzx eax, byte [esp + 0x8c]
mov dword [esp], 0xa0b5a2a9
mov dword [esp + 4], 0xdde3ced1
mov word [esp + 8], 0x69d5
mov dword [esp + 0xa], 0
mov byte [esp + 0xe], 0
mov ecx, 0xb150cbc
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + ecx - 0xb150cbc]
xor esi, ecx
lea edx, [esi - 0x37693fad]
mov edi, edx
and edi, 1
mov ebx, 0xac
sub ebx, esi
and ebx, 0x84
and edx, 0x7b
or edx, ebx
xor edx, 0x85
lea edx, [edx + edi*2]
mov byte [esp + ecx - 0xb150cbc], dl
inc ecx
cmp ecx, 0xb150ccb
jne 0x422cb0
push eax
lea eax, [esp + 4]
push eax
push dword [ebp + 0x14]
call fcn.00405ec0
add esp, 0xc
mov edi, eax
movzx eax, byte [esp + 0x8d]
mov dword [esp + 0x24], eax
mov dword [esp], 0x716a6b7c
mov dword [esp + 4], 0x49747241
mov dword [esp + 8], 0xdf57
mov byte [esp + 0xc], 0
mov ecx, 0x31ff0d9
movzx edx, byte [esp + ecx - 0x31ff0d9]
mov esi, ecx
and esi, edx
add esi, esi
sub edx, esi
add edx, ecx
mov esi, edx
and esi, 0xc0
mov eax, edx
and eax, 2
mov ebx, eax
xor ebx, 2
imul ebx, esi
or esi, 2
imul esi, eax
xor edx, 0xc2
add edx, ebx
add edx, esi
inc dl
mov byte [esp + ecx - 0x31ff0d9], dl
inc ecx
cmp ecx, 0x31ff0e6
jne 0x422d30
push dword [esp + 0x24]
lea eax, [esp + 4]
push eax
push dword [ebp + 0x14]
call fcn.00405ec0
add esp, 0xc
mov ecx, dword [esp + 0x20]
and cl, byte [esp + 0x1c]
mov edx, dword [esp + 0x18]
and dl, byte [esp + 0x14]
and dl, cl
or edi, dword [esp + 0x10]
or edi, eax
sete al
and al, dl
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret