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, 0x150
cmp byte [ebp + 0x18], 0
je 0x4230a8
mov edi, dword [ebp + 0x10]
mov esi, dword [ebp + 8]
lea ebx, [esp + 0x28]
push 0x120
push 0
push ebx
call fcn.0040c8d0
add esp, 0xc
mov ecx, esi
push 0
push 0
push 0x120
push ebx
push edi
push dword [ebp + 0xc]
call fcn.0043e9e0
xor ebx, ebx
test eax, eax
js 0x42348e
mov edi, dword [ebp + 0x14]
mov dword [esp + 4], 0x6a53685a
mov byte [esp + 8], 0xcc
mov dword [esp + 9], 0
nop
nop
nop
nop
nop
nop
movzx eax, byte [esp + ebx + 4]
lea ecx, [ebx + 0x66780ab2]
and ecx, eax
lea edx, [ebx + eax]
add edx, 0x66780ab2
add ecx, ecx
sub edx, ecx
mov eax, edx
and eax, 5
add eax, eax
xor edx, 0x7a
sub eax, edx
mov byte [esp + ebx + 4], al
mov eax, ebx
xor eax, 1
and ebx, 1
lea ebx, [eax + ebx*2]
cmp ebx, 9
jb 0x423050
cmp byte [esp + 0x47], 0
js 0x4230af
lea eax, [esp + 0x30]
lea ecx, [esp + 4]
push eax
push ecx
push edi
call fcn.00405d80
add esp, 0xc
mov bl, 1
jmp 0x423103
xor ebx, ebx
jmp 0x42348e
mov ebx, dword [esp + 0x30]
mov esi, dword [esp + 0x34]
mov eax, ebx
or eax, esi
je 0x423101
mov edi, dword [esp + 0x38]
inc edi
push edi
call fcn.0040c820
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.0043e9e0
test eax, eax
setns bl
js 0x4230f6
lea eax, [esp + 4]
push esi
push eax
push edi
call fcn.00405d80
add esp, 0xc
push esi
call fcn.0040c830
add esp, 4
jmp 0x423103
xor ebx, ebx
mov dword [esp + 4], 0x3a322802
mov word [esp + 8], 0x8d29
mov dword [esp + 0xa], 0
xor eax, eax
nop
nop
nop
nop
mov ecx, eax
add cl, 0xa2
xor cl, byte [esp + eax + 4]
add cl, 0xd6
mov byte [esp + eax + 4], cl
inc eax
cmp eax, 0xa
jne 0x423120
cmp byte [esp + 0x127], 0
js 0x42315e
lea eax, [esp + 0x110]
lea ecx, [esp + 4]
push eax
push ecx
push edi
call fcn.00405d80
add esp, 0xc
mov al, 1
mov dword [esp + 0x18], eax
jmp 0x4231cf
mov ecx, dword [esp + 0x110]
mov edi, dword [esp + 0x114]
mov eax, ecx
or eax, edi
je 0x4231c4
mov esi, dword [esp + 0x118]
inc esi
push esi
mov dword [esp + 0x1c], ecx
call fcn.0040c820
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push esi
mov esi, eax
push eax
push edi
push dword [esp + 0x2c]
call fcn.0043e9e0
test eax, eax
setns al
mov dword [esp + 0x18], eax
mov edi, dword [ebp + 0x14]
js 0x4231b9
lea eax, [esp + 4]
push esi
push eax
push edi
call fcn.00405d80
add esp, 0xc
push esi
call fcn.0040c830
add esp, 4
jmp 0x4231cf
mov dword [esp + 0x18], 0
mov edi, dword [ebp + 0x14]
mov dword [esp + 4], 0x7b794a40
mov dword [esp + 8], 0x7a4f4257
mov byte [esp + 0xc], 0xf0
mov word [esp + 0xd], 0
mov byte [esp + 0xf], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0xd6
xor cl, byte [esp + eax + 4]
add cl, 0xd2
mov byte [esp + eax + 4], cl
inc eax
cmp eax, 0xc
jne 0x423200
cmp byte [esp + 0x5f], 0
js 0x423238
lea eax, [esp + 0x48]
lea ecx, [esp + 4]
push eax
push ecx
push edi
call fcn.00405d80
add esp, 0xc
mov al, 1
mov dword [esp + 0x14], eax
jmp 0x4232a0
mov ecx, dword [esp + 0x48]
mov edi, dword [esp + 0x4c]
mov eax, ecx
or eax, edi
je 0x423295
mov esi, dword [esp + 0x50]
inc esi
push esi
mov dword [esp + 0x18], ecx
call fcn.0040c820
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push esi
mov esi, eax
push eax
push edi
push dword [esp + 0x28]
call fcn.0043e9e0
test eax, eax
setns al
mov dword [esp + 0x14], eax
mov edi, dword [ebp + 0x14]
js 0x42328a
lea eax, [esp + 4]
push esi
push eax
push edi
call fcn.00405d80
add esp, 0xc
push esi
call fcn.0040c830
add esp, 4
jmp 0x4232a0
mov dword [esp + 0x14], 0
mov edi, dword [ebp + 0x14]
mov dword [esp + 4], 0xf7eaf8e8
mov byte [esp + 8], 0x9c
mov dword [esp + 9], 0
mov eax, 0x1a
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax - 0x16]
lea edx, [eax - 0x151bfa00]
or edx, eax
and edx, ecx
add dl, dl
sub cl, dl
movzx ecx, cl
add ecx, eax
add cl, 0x7e
mov byte [esp + eax - 0x16], cl
inc eax
cmp eax, 0x23
jne 0x4232c0
cmp byte [esp + 0x77], 0
js 0x423303
lea eax, [esp + 0x60]
lea ecx, [esp + 4]
push eax
push ecx
push edi
call fcn.00405d80
add esp, 0xc
mov cl, 1
jmp 0x423361
mov ecx, dword [esp + 0x60]
mov edi, dword [esp + 0x64]
mov eax, ecx
or eax, edi
je 0x42335f
mov esi, dword [esp + 0x68]
inc esi
push esi
mov dword [esp + 0x20], ecx
call fcn.0040c820
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push esi
mov esi, eax
push eax
push edi
push dword [esp + 0x30]
call fcn.0043e9e0
test eax, eax
setns al
mov edi, eax
js 0x423352
lea eax, [esp + 4]
push esi
push eax
push dword [ebp + 0x14]
call fcn.00405d80
add esp, 0xc
push esi
call fcn.0040c830
add esp, 4
mov ecx, edi
jmp 0x423361
xor ecx, ecx
mov eax, dword [esp + 0x14]
and al, cl
mov esi, dword [esp + 0x128]
mov edi, dword [esp + 0x12c]
and bl, byte [esp + 0x18]
and bl, al
mov dword [esp + 4], 0xaeaaa397
mov dword [esp + 8], 0x84bb8ca6
mov dword [esp + 0xc], 0x218fbfbf
mov word [esp + 0x10], 0
xor edx, edx
mov al, 0x34
nop
nop
mov ah, byte [esp + edx + 4]
xor ah, al
mov cl, 8
sub cl, ah
mov byte [esp + edx + 4], cl
inc edx
dec al
cmp edx, 0xe
jne 0x4233a0
mov dword [esp + 0x20], esi
mov dword [esp + 0x24], edi
fild qword [esp + 0x20]
sub esp, 0x10
lea eax, [esp + 0x14]
mov dword [esp + 4], eax
mov edi, dword [ebp + 0x14]
mov dword [esp], edi
fstp qword [esp + 8]
call fcn.00405dd0
add esp, 0x10
mov esi, eax
movzx eax, byte [esp + 0x80]
mov dword [esp + 4], 0xfce7faef
mov dword [esp + 8], 0xfffdeeef
mov word [esp + 0xc], 0xfe3
mov dword [esp + 0xe], 0
xor ecx, ecx
nop
nop
nop
nop
nop
nop
mov edx, ecx
add dl, 0x41
xor dl, byte [esp + ecx + 4]
add dl, 0xbb
mov byte [esp + ecx + 4], dl
inc ecx
cmp ecx, 0xe
jne 0x423410
push eax
lea eax, [esp + 8]
push eax
push edi
call fcn.00405e60
add esp, 0xc
mov edi, eax
movzx eax, byte [esp + 0x81]
mov dword [esp + 4], 0xe1fafbe4
mov dword [esp + 8], 0xf9fce2f1
mov dword [esp + 0xc], 0x57ef
mov byte [esp + 0x10], 0
or edi, esi
xor ecx, ecx
mov edx, ecx
add dl, 0x6d
xor dl, byte [esp + ecx + 4]
add dl, 0xdf
mov byte [esp + ecx + 4], dl
inc ecx
cmp ecx, 0xd
jne 0x423460
push eax
lea eax, [esp + 8]
push eax
push dword [ebp + 0x14]
call fcn.00405e60
add esp, 0xc
or edi, eax
sete al
and bl, al
mov eax, ebx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret