Function at 0x422af0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x150
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 + 0x24]
push 0
push 0
push eax
push edx
push dword [ebp + 0x10]
push dword [ebp + 0xc]
call fcn.0043e650
test eax, eax
js 0x422b9f
mov edi, dword [ebp + 0x14]
mov dword [esp], 0x36013c02
mov byte [esp + 4], 0x90
mov dword [esp + 5], 0
mov word [esp + 9], 0
mov eax, 0xa2463965
movzx ecx, byte [esp + eax + 0x5db9c69b]
mov edx, eax
and edx, ecx
add ecx, eax
add edx, edx
mov esi, ecx
sub esi, edx
and ecx, 1
xor esi, 1
lea ecx, [esi + ecx*2]
add cl, 6
mov byte [esp + eax + 0x5db9c69b], cl
inc eax
cmp eax, 0xa2463970
jne 0x422b50
cmp byte [esp + 0x43], 0
js 0x422ba6
lea eax, [esp + 0x2c]
mov ecx, esp
push eax
push ecx
push edi
call fcn.00405e20
add esp, 0xc
mov al, 1
mov dword [esp + 0x10], eax
jmp 0x422c06
xor eax, eax
jmp 0x422fc4
mov esi, dword [esp + 0x2c]
mov ebx, dword [esp + 0x30]
mov eax, esi
or eax, ebx
je 0x422bfa
mov edi, dword [esp + 0x34]
inc edi
push edi
call fcn.0040c8d0
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.0043e650
test eax, eax
setns al
mov dword [esp + 0x10], eax
js 0x422bef
mov eax, esp
push esi
push eax
push edi
call fcn.00405e20
add esp, 0xc
push esi
call fcn.0040c8e0
add esp, 4
jmp 0x422c02
mov dword [esp + 0x10], 0
movzx ebx, byte [ebp + 0x18]
movzx eax, bl
mov dword [esp + 0x14], eax
lea eax, [eax*8 + 0xe8]
mov dword [esp], 0xbea690be
mov dword [esp + 4], 0x2db1
mov byte [esp + 8], 0
xor ecx, ecx
nop
nop
nop
nop
nop
nop
mov edx, ecx
add dl, 0x4c
xor dl, byte [esp + ecx]
add dl, 0x84
mov byte [esp + ecx], dl
inc ecx
cmp ecx, 9
jne 0x422c30
lea ecx, [esp + eax]
add ecx, 0x24
cmp byte [esp + eax + 0x3b], 0
js 0x422c62
mov eax, esp
push ecx
push eax
push edi
call fcn.00405e20
add esp, 0xc
mov bl, 1
jmp 0x422cb0
mov ebx, dword [ecx]
mov esi, dword [ecx + 4]
mov eax, ebx
or eax, esi
je 0x422cae
mov edi, dword [ecx + 8]
inc edi
push edi
call fcn.0040c8d0
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.0043e650
test eax, eax
setns bl
js 0x422ca3
mov eax, esp
push esi
push eax
push edi
call fcn.00405e20
add esp, 0xc
push esi
call fcn.0040c8e0
add esp, 4
jmp 0x422cb0
xor ebx, ebx
mov eax, dword [esp + 0x10]
and al, bl
mov dword [esp + 0x10], eax
mov dword [esp], 0x6b696a70
mov dword [esp + 4], 0x5a47727f
mov byte [esp + 8], 0xa0
mov dword [esp + 9], 0
mov byte [esp + 0xd], 0
mov eax, 0x5a
mov ecx, 0x25
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, ecx
and esi, 0x3d
mov edx, eax
and edx, 0x42
or edx, esi
xor dl, byte [esp + eax - 0x5a]
xor dl, 0x3d
add dl, 0x3e
mov byte [esp + eax - 0x5a], dl
inc eax
dec ecx
cmp eax, 0x68
jne 0x422cf0
cmp byte [esp + 0x5b], 0
js 0x422d2d
lea eax, [esp + 0x44]
mov ecx, esp
push eax
push ecx
push edi
call fcn.00405e20
add esp, 0xc
mov bl, 1
jmp 0x422d7f
mov ebx, dword [esp + 0x44]
mov esi, dword [esp + 0x48]
mov eax, ebx
or eax, esi
je 0x422d7d
mov edi, dword [esp + 0x4c]
inc edi
push edi
call fcn.0040c8d0
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.0043e650
test eax, eax
setns bl
js 0x422d72
mov eax, esp
push esi
push eax
push edi
call fcn.00405e20
add esp, 0xc
push esi
call fcn.0040c8e0
add esp, 4
jmp 0x422d7f
xor ebx, ebx
mov eax, dword [esp + 0x10]
and al, bl
mov dword [esp + 0x10], eax
mov dword [esp], 0xbfaaa8b8
mov byte [esp + 4], 0x54
mov dword [esp + 5], 0
mov dword [esp + 8], 0
mov eax, 0xe
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax - 0xe]
lea ecx, [eax - 0x1c5f2200]
mov esi, eax
and esi, edx
or ecx, edx
xor ecx, esi
add ecx, 0x8ddba9b9
mov edx, ecx
and edx, 1
xor ecx, 1
lea ecx, [ecx + edx*2]
mov byte [esp + eax - 0xe], cl
inc eax
cmp eax, 0x1a
jne 0x422db0
cmp byte [esp + 0x73], 0
js 0x422dfa
lea eax, [esp + 0x5c]
mov ecx, esp
push eax
push ecx
push edi
call fcn.00405e20
add esp, 0xc
mov bl, 1
jmp 0x422e4c
mov ebx, dword [esp + 0x5c]
mov esi, dword [esp + 0x60]
mov eax, ebx
or eax, esi
je 0x422e4a
mov edi, dword [esp + 0x64]
inc edi
push edi
call fcn.0040c8d0
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.0043e650
test eax, eax
setns bl
js 0x422e3f
mov eax, esp
push esi
push eax
push edi
call fcn.00405e20
add esp, 0xc
push esi
call fcn.0040c8e0
add esp, 4
jmp 0x422e4c
xor ebx, ebx
mov eax, dword [esp + 0x10]
and al, bl
mov dword [esp + 0x10], eax
mov ecx, dword [esp + 0x14]
mov eax, dword [esp + ecx*8 + 0x124]
mov ecx, dword [esp + ecx*8 + 0x128]
mov dword [esp], 0xda9e97ab
mov dword [esp + 4], 0xd4e7d4e2
mov dword [esp + 8], 0x79d3e3e3
mov word [esp + 0xc], 0
mov byte [esp + 0xe], 0
mov edx, 0xa711d0bd
movzx ebx, byte [esp + edx + 0x58ee2f43]
xor ebx, edx
mov esi, ebx
and esi, 1
or ebx, 1
add ebx, esi
add bl, 0x4e
mov byte [esp + edx + 0x58ee2f43], bl
inc edx
cmp edx, 0xa711d0cc
jne 0x422e90
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], ecx
fild qword [esp + 0x18]
sub esp, 0x10
lea eax, [esp + 0x10]
mov dword [esp + 4], eax
mov dword [esp], edi
fstp qword [esp + 8]
call fcn.00405e70
add esp, 0x10
mov dword [esp + 0x14], eax
movzx eax, byte [esp + 0x7c]
mov dword [esp], 0xf8edfef1
mov dword [esp + 4], 0xf5f7eae9
mov dword [esp + 8], 0x1e5
xor ecx, ecx
xor esi, esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + esi]
mov ebx, ecx
and ebx, 4
mov edx, esi
xor edx, 0xe11003c2
add edx, ebx
lea ebx, [edx + edx]
not ebx
add ebx, edx
xor ebx, edx
and ebx, edi
xor ebx, edx
add bl, 0x36
mov byte [esp + esi], bl
inc esi
add ecx, 2
cmp esi, 0xc
jne 0x422f10
push eax
lea eax, [esp + 4]
push eax
push dword [ebp + 0x14]
call fcn.00405f00
add esp, 0xc
mov edi, eax
movzx eax, byte [esp + 0x7d]
mov dword [esp], 0xafaaad90
mov dword [esp + 4], 0x8fb0ae9f
mov dword [esp + 8], 0x21b9
or edi, dword [esp + 0x14]
mov ecx, 0xca
mov edx, 0x35
nop
nop
nop
nop
movzx ebx, byte [esp + ecx - 0xca]
mov esi, ecx
or esi, ebx
not ebx
or ebx, edx
and ebx, esi
add bl, 0xe
mov byte [esp + ecx - 0xca], bl
inc ecx
dec edx
cmp ecx, 0xd6
jne 0x422f80
push eax
lea eax, [esp + 4]
push eax
push dword [ebp + 0x14]
call fcn.00405f00
add esp, 0xc
or edi, eax
sete al
mov ecx, dword [esp + 0x10]
and cl, al
mov eax, ecx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret