Function at 0x422b90
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x150
mov ecx, dword [ebp + 8]
xor eax, eax
cmp byte [ebp + 0x18], 0
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.0043c800
test eax, eax
js 0x422c4e
mov dword [esp], 0x262f202e
mov byte [esp + 4], 0x84
mov dword [esp + 5], 0
mov dword [esp + 8], 0
mov eax, 0x20
mov ecx, 0x5f9d7df
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax - 0x20]
mov esi, ecx
or esi, edx
lea ebx, [ecx - 0x5f9d700]
and ebx, edx
xor ebx, esi
and ebx, eax
add bl, bl
sub dl, bl
movzx edx, dl
add edx, eax
add dl, 0x60
mov byte [esp + eax - 0x20], dl
inc eax
dec ecx
cmp eax, 0x2c
jne 0x422c00
cmp byte [esp + 0x43], 0
js 0x422c55
lea eax, [esp + 0x2c]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405de0
add esp, 0xc
mov al, 1
mov dword [esp + 0x10], eax
jmp 0x422cb0
xor eax, eax
jmp 0x423104
mov esi, dword [esp + 0x2c]
mov ebx, dword [esp + 0x30]
mov eax, esi
or eax, ebx
je 0x422ca8
mov edi, dword [esp + 0x34]
inc edi
push edi
call fcn.0040c8e0
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.0043c800
test eax, eax
setns bl
js 0x422c99
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405de0
add esp, 0xc
mov dword [esp + 0x10], ebx
push edi
call fcn.0040c8f0
add esp, 4
jmp 0x422cb0
mov dword [esp + 0x10], 0
movzx eax, byte [ebp + 0x18]
mov dword [esp + 0x14], eax
lea eax, [eax*8 + 0xe8]
mov dword [esp], 0x92868c9e
mov word [esp + 4], 0x2f83
mov dword [esp + 6], 0
mov byte [esp + 0xa], 0
xor ecx, ecx
nop
nop
nop
nop
mov edx, ecx
and edx, 5
mov esi, ecx
and esi, 2
mov edi, esi
xor edi, 2
imul edi, edx
or edx, 2
imul edx, esi
mov ebx, ecx
xor ebx, 0x87
add ebx, edi
add ebx, edx
xor bl, byte [esp + ecx]
add bl, 0x5d
mov byte [esp + ecx], bl
inc ecx
cmp ecx, 0xb
jne 0x422ce0
lea ecx, [esp + eax]
add ecx, 0x24
cmp byte [esp + eax + 0x3b], 0
js 0x422d33
mov eax, esp
push ecx
push eax
push dword [ebp + 0x14]
call fcn.00405de0
add esp, 0xc
mov bl, 1
jmp 0x422d80
mov ebx, dword [ecx]
mov esi, dword [ecx + 4]
mov eax, ebx
or eax, esi
je 0x422d7e
mov edi, dword [ecx + 8]
inc edi
push edi
call fcn.0040c8e0
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.0043c800
test eax, eax
setns bl
js 0x422d73
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405de0
add esp, 0xc
push edi
call fcn.0040c8f0
add esp, 4
jmp 0x422d80
xor ebx, ebx
mov edx, dword [esp + 0x10]
and dl, bl
mov dword [esp], 0xebe9eaf0
mov dword [esp + 4], 0xdac7f2ff
mov byte [esp + 8], 0xa0
mov dword [esp + 9], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x1a
xor cl, byte [esp + eax]
add cl, 0x7e
mov byte [esp + eax], cl
inc eax
cmp eax, 0xd
jne 0x422db0
mov dword [esp + 0x10], edx
cmp byte [esp + 0x5b], 0
js 0x422de6
lea eax, [esp + 0x44]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405de0
add esp, 0xc
mov bl, 1
jmp 0x422e37
mov ebx, dword [esp + 0x44]
mov esi, dword [esp + 0x48]
mov eax, ebx
or eax, esi
je 0x422e35
mov edi, dword [esp + 0x4c]
inc edi
push edi
call fcn.0040c8e0
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.0043c800
test eax, eax
setns bl
js 0x422e2a
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405de0
add esp, 0xc
push edi
call fcn.0040c8f0
add esp, 4
jmp 0x422e37
xor ebx, ebx
mov eax, dword [esp + 0x10]
and al, bl
mov ebx, eax
mov dword [esp], 0xdfeaa898
mov byte [esp + 4], 0x74
mov dword [esp + 5], 0
mov word [esp + 9], 0
mov eax, 0x3e
nop
movzx edx, byte [esp + eax - 0x3e]
mov ecx, eax
and ecx, edx
mov edi, ecx
or edi, 0xfffffffd
inc edi
mov esi, ecx
and esi, 0x7d
imul esi, edi
mov edi, ecx
and edi, 2
or ecx, 2
imul ecx, edi
add esi, edx
sub esi, ecx
lea ecx, [eax + esi]
add ecx, 0x9ed38100
mov esi, ecx
xor esi, 0x1a218636
mov edx, ecx
or edx, 0xe5de79c9
and edx, esi
mov edi, edx
and edi, 2
mov esi, edx
or edx, 2
imul edx, edi
xor edi, 2
and esi, 0xfd
imul esi, edi
xor ecx, 0xe5de79c9
add edx, ecx
add edx, esi
and ecx, 1
xor edx, 1
lea ecx, [edx + ecx*2]
mov byte [esp + eax - 0x3e], cl
inc eax
cmp eax, 0x49
jne 0x422e60
mov dword [esp + 0x10], ebx
cmp byte [esp + 0x73], 0
js 0x422ef9
lea eax, [esp + 0x5c]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405de0
add esp, 0xc
mov bl, 1
jmp 0x422f4a
mov ebx, dword [esp + 0x5c]
mov esi, dword [esp + 0x60]
mov eax, ebx
or eax, esi
je 0x422f48
mov edi, dword [esp + 0x64]
inc edi
push edi
call fcn.0040c8e0
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.0043c800
test eax, eax
setns bl
js 0x422f3d
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405de0
add esp, 0xc
push edi
call fcn.0040c8f0
add esp, 4
jmp 0x422f4a
xor ebx, ebx
mov eax, dword [esp + 0x10]
and al, bl
mov edi, eax
mov eax, dword [esp + 0x14]
mov esi, dword [esp + eax*8 + 0x124]
mov ecx, dword [esp + eax*8 + 0x128]
mov dword [esp], 0xe061105
mov dword [esp + 4], 0x301d081a
mov dword [esp + 8], 0x8f111d1d
mov dword [esp + 0xc], 0
mov edx, 0x2557cfe6
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [esp + edx - 0x2557cfe6]
mov ebx, eax
and ebx, edx
add bl, bl
sub al, bl
movzx eax, al
add eax, edx
add al, 0x82
mov byte [esp + edx - 0x2557cfe6], al
inc edx
cmp edx, 0x2557cff6
jne 0x422f90
mov dword [esp + 0x18], esi
mov dword [esp + 0x1c], ecx
fild qword [esp + 0x18]
sub esp, 0x10
lea eax, [esp + 0x10]
mov dword [esp + 4], eax
mov eax, dword [ebp + 0x14]
mov dword [esp], eax
fstp qword [esp + 8]
call fcn.00405e30
add esp, 0x10
test eax, eax
sete cl
movzx eax, byte [esp + 0x7c]
mov dword [esp], 0xe4fbe6eb
mov dword [esp + 4], 0xdbddcaf3
mov word [esp + 8], 0xa3cf
mov dword [esp + 0xa], 0
mov ebx, edi
and bl, cl
mov ecx, 0x9906a41b
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx + 0x66f95be5]
mov esi, ecx
and esi, edx
add edx, ecx
add esi, esi
mov edi, edx
sub edi, esi
and edx, 1
xor edi, 1
lea edx, [edi + edx*2]
add dl, 0x78
mov byte [esp + ecx + 0x66f95be5], dl
inc ecx
cmp ecx, 0x9906a429
jne 0x423020
push eax
lea eax, [esp + 4]
push eax
push dword [ebp + 0x14]
call fcn.00405ec0
add esp, 0xc
test eax, eax
setne al
xor al, bl
movzx ecx, byte [esp + 0x7d]
mov dword [esp + 0x14], ecx
mov dword [esp], 0x515a5b6c
mov dword [esp + 4], 0x59545261
mov word [esp + 8], 0xcf57
mov dword [esp + 0xa], 0
and al, bl
mov dword [esp + 0x10], eax
mov edi, 0xbd34b9b1
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + edi + 0x42cb464f]
mov ecx, edi
and ecx, esi
mov eax, ecx
or eax, 0xfd
inc eax
mov edx, ecx
and edx, 0xfffffffd
imul edx, eax
mov eax, ecx
xor esi, edi
lea ebx, [esi + ecx*2]
and ecx, 2
or eax, 2
imul eax, ecx
sub edx, eax
add ebx, edx
add bl, 0x8b
mov byte [esp + edi + 0x42cb464f], bl
inc edi
cmp edi, 0xbd34b9bf
jne 0x4230a0
push dword [esp + 0x14]
lea eax, [esp + 4]
push eax
push dword [ebp + 0x14]
call fcn.00405ec0
add esp, 0xc
test eax, 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