Function at 0x421a00
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 0x421aa6
mov edi, dword [ebp + 0x10]
mov esi, dword [ebp + 8]
lea ebx, [esp + 0x28]
push 0x120
push 0
push ebx
call fcn.0040ca90
add esp, 0xc
mov ecx, esi
push 0
push 0
push 0x120
push ebx
push edi
push dword [ebp + 0xc]
call fcn.0043f100
xor ecx, ecx
test eax, eax
js 0x421f31
mov edi, dword [ebp + 0x14]
mov dword [esp + 4], 0x6a73687a
mov byte [esp + 8], 0xc
mov word [esp + 9], 0
mov byte [esp + 0xb], 0
nop
nop
mov eax, ecx
add al, 0x82
xor al, byte [esp + ecx + 4]
add al, 0x76
mov byte [esp + ecx + 4], al
inc ecx
cmp ecx, 8
jne 0x421a70
cmp byte [esp + 0x47], 0
js 0x421aad
lea eax, [esp + 0x30]
lea ecx, [esp + 4]
push eax
push ecx
push edi
call fcn.00405fb0
add esp, 0xc
mov al, 1
mov dword [esp + 0x14], eax
jmp 0x421b0e
xor ecx, ecx
jmp 0x421f31
mov ebx, dword [esp + 0x30]
mov esi, dword [esp + 0x34]
mov eax, ebx
or eax, esi
je 0x421b03
mov edi, dword [esp + 0x38]
inc edi
push edi
call fcn.0040c900
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push edi
push eax
push esi
mov esi, eax
push ebx
call fcn.0043f100
test eax, eax
setns al
mov dword [esp + 0x14], eax
mov edi, dword [ebp + 0x14]
js 0x421af8
lea eax, [esp + 4]
push esi
push eax
push edi
call fcn.00405fb0
add esp, 0xc
push esi
call fcn.0040c910
add esp, 4
jmp 0x421b0e
mov dword [esp + 0x14], 0
mov edi, dword [ebp + 0x14]
mov dword [esp + 4], 0xb6be40b6
mov word [esp + 8], 0x2541
mov dword [esp + 0xa], 0
mov byte [esp + 0xe], 0
xor eax, eax
nop
nop
nop
nop
mov edx, eax
not edx
or edx, 0xb8
mov ecx, eax
or ecx, 0xb8
add ecx, eax
add ecx, edx
inc cl
xor cl, byte [esp + eax + 4]
add cl, 0x68
mov byte [esp + eax + 4], cl
mov ecx, eax
xor ecx, 1
and eax, 1
lea eax, [ecx + eax*2]
cmp eax, 0xb
jb 0x421b30
cmp byte [esp + 0x127], 0
js 0x421b87
lea eax, [esp + 0x110]
lea ecx, [esp + 4]
push eax
push ecx
push edi
call fcn.00405fb0
add esp, 0xc
mov al, 1
jmp 0x421bf6
mov ebx, edi
mov ecx, dword [esp + 0x110]
mov edi, dword [esp + 0x114]
mov eax, ecx
or eax, edi
je 0x421bf2
mov esi, dword [esp + 0x118]
inc esi
push esi
mov dword [esp + 0x1c], ecx
call fcn.0040c900
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.0043f100
test eax, eax
setns al
mov dword [esp + 0x18], eax
mov edi, ebx
js 0x421be3
lea eax, [esp + 4]
push esi
push eax
push edi
call fcn.00405fb0
add esp, 0xc
push esi
call fcn.0040c910
add esp, 4
mov eax, dword [esp + 0x18]
jmp 0x421bf6
xor eax, eax
mov edi, ebx
mov ebx, dword [esp + 0x14]
and bl, al
mov dword [esp + 4], 0xe5e7ea14
mov dword [esp + 8], 0xe20df219
mov byte [esp + 0xc], 0x64
mov dword [esp + 0xd], 0
xor eax, eax
xor ecx, ecx
nop
nop
nop
mov esi, eax
and esi, 0x16
mov edx, ecx
xor edx, 0xeb
add edx, esi
xor dl, byte [esp + ecx + 4]
add dl, 0x69
mov byte [esp + ecx + 4], dl
inc ecx
add eax, 2
cmp ecx, 0xd
jne 0x421c20
cmp byte [esp + 0x5f], 0
js 0x421c61
lea eax, [esp + 0x48]
lea ecx, [esp + 4]
push eax
push ecx
push edi
call fcn.00405fb0
add esp, 0xc
mov al, 1
jmp 0x421cbf
mov ecx, dword [esp + 0x48]
mov edi, dword [esp + 0x4c]
mov eax, ecx
or eax, edi
je 0x421cbd
mov esi, dword [esp + 0x50]
inc esi
push esi
mov dword [esp + 0x18], ecx
call fcn.0040c900
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.0043f100
test eax, eax
setns al
mov edi, eax
js 0x421cb0
lea eax, [esp + 4]
push esi
push eax
push dword [ebp + 0x14]
call fcn.00405fb0
add esp, 0xc
push esi
call fcn.0040c910
add esp, 4
mov eax, edi
jmp 0x421cbf
xor eax, eax
and bl, al
mov dword [esp + 0x14], ebx
mov dword [esp + 4], 0xa9daa4d4
mov byte [esp + 8], 0x40
mov dword [esp + 9], 0
xor eax, eax
xor ecx, ecx
nop
nop
movzx esi, byte [esp + ecx + 4]
mov edi, eax
and edi, 2
mov edx, ecx
xor edx, 0xa6087591
add edx, edi
mov edi, edx
and edi, esi
add edi, edi
add edx, esi
mov esi, edx
sub esi, edi
and esi, 0xfe
and edx, 1
add esi, edx
add esi, 0x2a
xor esi, 1
lea edx, [esi + edx*2]
mov byte [esp + ecx + 4], dl
inc ecx
add eax, 2
cmp ecx, 9
jne 0x421ce0
cmp byte [esp + 0x77], 0
js 0x421d42
lea eax, [esp + 0x60]
lea ecx, [esp + 4]
push eax
push ecx
mov edi, dword [ebp + 0x14]
push edi
call fcn.00405fb0
add esp, 0xc
mov cl, 1
jmp 0x421da4
mov ecx, dword [esp + 0x60]
mov edi, dword [esp + 0x64]
mov eax, ecx
or eax, edi
je 0x421d9f
mov esi, dword [esp + 0x68]
inc esi
push esi
mov dword [esp + 0x1c], ecx
call fcn.0040c900
add esp, 4
mov ebx, eax
mov ecx, dword [ebp + 8]
push 0
push 0
push esi
push eax
push edi
push dword [esp + 0x2c]
call fcn.0043f100
test eax, eax
setns al
mov esi, eax
mov edi, dword [ebp + 0x14]
js 0x421d92
lea eax, [esp + 4]
push ebx
push eax
push edi
call fcn.00405fb0
add esp, 0xc
push ebx
call fcn.0040c910
add esp, 4
mov ecx, esi
jmp 0x421da4
xor ecx, ecx
mov edi, dword [ebp + 0x14]
mov eax, dword [esp + 0x14]
and al, cl
mov dword [esp + 0x14], eax
mov esi, dword [esp + 0x128]
mov ecx, dword [esp + 0x12c]
mov dword [esp + 4], 0x7e667165
mov dword [esp + 8], 0x706d786a
mov dword [esp + 0xc], 0xdf716d6d
mov dword [esp + 0x10], 0
xor edx, edx
nop
nop
mov eax, edx
add al, 0x2e
xor al, byte [esp + edx + 4]
add al, 0x1a
mov byte [esp + edx + 4], al
inc edx
cmp edx, 0x10
jne 0x421de0
mov dword [esp + 0x20], esi
mov dword [esp + 0x24], ecx
fild qword [esp + 0x20]
sub esp, 0x10
lea esi, [esp + 0x14]
mov dword [esp + 4], esi
mov dword [esp], edi
fstp qword [esp + 8]
call fcn.00406000
add esp, 0x10
mov dword [esp + 0x18], eax
movzx eax, byte [esp + 0x80]
mov dword [esp + 0x1c], eax
mov dword [esp + 4], 0x24ef1ae7
mov dword [esp + 8], 0x2725d6d7
mov dword [esp + 0xc], 0xb7d3
mov byte [esp + 0x10], 0
mov ecx, 0x50661e1d
mov ebx, 0x2f99e1e2
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [esp + ecx - 0x50661e19]
mov edx, ebx
and edx, 0x238920f3
mov edi, ecx
and edi, 0x50640e0c
or edi, edx
xor edi, eax
mov eax, edi
and eax, 0x6e
add eax, eax
xor edi, 0x62
xor eax, 0xc4
sub eax, edi
mov byte [esp + ecx - 0x50661e19], al
inc ecx
dec ebx
cmp ecx, 0x50661e2a
jne 0x421e60
push dword [esp + 0x1c]
push esi
push dword [ebp + 0x14]
call fcn.00406090
add esp, 0xc
mov edi, eax
movzx eax, byte [esp + 0x81]
mov dword [esp + 0x1c], eax
mov dword [esp + 4], 0x93969598
mov dword [esp + 8], 0x9b989a8b
mov dword [esp + 0xc], 0x39b1
mov byte [esp + 0x10], 0
or edi, dword [esp + 0x18]
mov ecx, 0x37
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esi]
lea eax, [ecx - 0x41050000]
or eax, ebx
and ebx, ecx
lea edx, [eax + eax]
not edx
add edx, eax
or edx, ebx
add dl, 0x18
mov byte [esi], dl
inc esi
dec ecx
cmp ecx, 0x2a
jne 0x421ef0
lea eax, [esp + 4]
push dword [esp + 0x1c]
push eax
push dword [ebp + 0x14]
call fcn.00406090
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