Function at 0x421a60
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x158
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 + 0x2c]
push 0
push 0
push eax
push edx
push dword [ebp + 0x10]
push dword [ebp + 0xc]
call fcn.0043dc00
test eax, eax
js 0x421b19
mov dword [esp], 0x7279747e
mov byte [esp + 4], 8
mov dword [esp + 5], 0
mov eax, 0x5cd0eff3
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax - 0x5cd0eff3]
lea edx, [eax - 0x5cd0eff0]
and edx, ecx
add edx, edx
sub ecx, edx
add ecx, eax
mov edx, ecx
xor edx, 0x9b
and ecx, 0x64
add ecx, ecx
sub ecx, edx
add cl, 0x9c
mov byte [esp + eax - 0x5cd0eff3], cl
inc eax
cmp eax, 0x5cd0effc
jne 0x421ac0
cmp byte [esp + 0x4b], 0
js 0x421b20
lea eax, [esp + 0x34]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405d40
add esp, 0xc
mov al, 1
mov dword [esp + 0x10], eax
jmp 0x421b7f
xor eax, eax
jmp 0x421fd2
mov ebx, dword [esp + 0x34]
mov esi, dword [esp + 0x38]
mov eax, ebx
or eax, esi
je 0x421b73
mov edi, dword [esp + 0x3c]
inc edi
push edi
call fcn.0040c9c0
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.0043dc00
test eax, eax
setns bl
js 0x421b64
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405d40
add esp, 0xc
mov dword [esp + 0x10], ebx
push edi
call fcn.0040c9d0
add esp, 4
jmp 0x421b7b
mov dword [esp + 0x10], 0
movzx ebx, byte [ebp + 0x18]
movzx eax, bl
mov dword [esp + 0x18], eax
lea eax, [eax*8 + 0xe8]
mov dword [esp], 0xe06300e
mov word [esp + 4], 0x9d31
mov dword [esp + 6], 0
mov byte [esp + 0xa], 0
mov ecx, 0x999156a4
mov edx, 0x5b
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + ecx + 0x666ea95c]
mov ebx, edx
xor ebx, ecx
and ebx, esi
xor ebx, ecx
mov esi, ebx
not esi
and esi, 0x35
and ebx, 0xca
sub ebx, esi
inc bl
mov byte [esp + ecx + 0x666ea95c], bl
inc ecx
dec edx
cmp ecx, 0x999156af
jne 0x421bc0
lea ecx, [esp + eax]
add ecx, 0x2c
cmp byte [esp + eax + 0x43], 0
js 0x421c12
mov eax, esp
push ecx
push eax
push dword [ebp + 0x14]
call fcn.00405d40
add esp, 0xc
mov bl, 1
jmp 0x421c5f
mov ebx, dword [ecx]
mov esi, dword [ecx + 4]
mov eax, ebx
or eax, esi
je 0x421c5d
mov edi, dword [ecx + 8]
inc edi
push edi
call fcn.0040c9c0
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.0043dc00
test eax, eax
setns bl
js 0x421c52
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405d40
add esp, 0xc
push edi
call fcn.0040c9d0
add esp, 4
jmp 0x421c5f
xor ebx, ebx
mov eax, dword [esp + 0x10]
and al, bl
mov esi, eax
mov dword [esp], 0x85877a74
mov dword [esp + 4], 0x827d7269
mov byte [esp + 8], 4
mov dword [esp + 9], 0
mov eax, 0xe1457c03
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x1eba83fd]
mov edx, ecx
and edx, eax
add dl, dl
sub cl, dl
movzx ecx, cl
add ecx, eax
add cl, 0xf1
mov byte [esp + eax + 0x1eba83fd], cl
inc eax
cmp eax, 0xe1457c10
jne 0x421c90
mov dword [esp + 0x10], esi
cmp byte [esp + 0x63], 0
js 0x421cd9
lea eax, [esp + 0x4c]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405d40
add esp, 0xc
mov bl, 1
jmp 0x421d2a
mov ebx, dword [esp + 0x4c]
mov esi, dword [esp + 0x50]
mov eax, ebx
or eax, esi
je 0x421d28
mov edi, dword [esp + 0x54]
inc edi
push edi
call fcn.0040c9c0
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.0043dc00
test eax, eax
setns bl
js 0x421d1d
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405d40
add esp, 0xc
push edi
call fcn.0040c9d0
add esp, 4
jmp 0x421d2a
xor ebx, ebx
mov eax, dword [esp + 0x10]
and al, bl
mov ebx, eax
mov dword [esp], 0xf1a3808
mov byte [esp + 4], 0x94
mov word [esp + 5], 0
mov byte [esp + 7], 0
xor eax, eax
nop
nop
nop
nop
movzx ecx, byte [esp + eax]
lea esi, [eax + 0xe6]
and esi, ecx
mov edi, esi
and edi, 0xffffffed
mov edx, esi
or edx, 0xfd
inc edx
imul edx, edi
mov edi, esi
and edi, 2
or esi, 2
imul esi, edi
sub edx, esi
add edx, eax
add dl, cl
add dl, 0x68
mov byte [esp + eax], dl
mov ecx, eax
and ecx, 1
xor eax, 1
lea eax, [eax + ecx*2]
cmp eax, 8
jb 0x421d50
cmp byte [esp + 0x7b], 0
js 0x421db5
lea eax, [esp + 0x64]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405d40
add esp, 0xc
mov esi, 1
jmp 0x421e12
mov dword [esp + 0x10], ebx
mov ebx, dword [esp + 0x64]
mov esi, dword [esp + 0x68]
mov eax, ebx
or eax, esi
je 0x421e0c
mov edi, dword [esp + 0x6c]
inc edi
push edi
call fcn.0040c9c0
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.0043dc00
mov esi, eax
test eax, eax
js 0x421dfc
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405d40
add esp, 0xc
push edi
call fcn.0040c9d0
add esp, 4
not esi
shr esi, 0x1f
jmp 0x421e0e
xor esi, esi
mov ebx, dword [esp + 0x10]
movzx eax, bl
not eax
mov dword [esp + 0x1c], eax
or esi, eax
mov dword [esp + 0x10], esi
mov ecx, dword [esp + 0x18]
mov eax, dword [esp + ecx*8 + 0x12c]
mov ecx, dword [esp + ecx*8 + 0x130]
mov dword [esp], 0xa0e173b
mov dword [esp + 4], 0x34073402
mov dword [esp + 8], 0x89330303
mov dword [esp + 0xc], 0
mov edx, 5
mov edi, 0x1a
nop
nop
nop
nop
mov esi, edi
and esi, 0x19
mov ebx, edx
and ebx, 6
or ebx, esi
xor bl, byte [esp + edx - 5]
xor bl, 0x39
add bl, 0x47
mov byte [esp + edx - 5], bl
inc edx
dec edi
cmp edx, 0x15
jne 0x421e60
mov dword [esp + 0x20], eax
mov dword [esp + 0x24], ecx
fild qword [esp + 0x20]
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.00405d90
add esp, 0x10
mov dword [esp + 0x18], eax
movzx eax, byte [esp + 0x84]
mov dword [esp + 0x14], eax
mov dword [esp], 0x84ff8a87
mov dword [esp + 4], 0x8785f6f7
mov word [esp + 8], 0x17f3
mov dword [esp + 0xa], 0
xor ecx, ecx
xor edx, edx
nop
nop
nop
nop
movzx edi, byte [esp + edx]
mov ebx, ecx
and ebx, 0xa
mov esi, edx
xor esi, 0xc5
add esi, ebx
mov eax, edi
not eax
lea ebx, [edi + edi]
not ebx
add ebx, edi
or ebx, eax
xor ebx, edi
and ebx, esi
xor ebx, edi
add bl, 0x27
mov byte [esp + edx], bl
inc edx
add ecx, 2
cmp edx, 0xe
jne 0x421ee0
push dword [esp + 0x14]
lea eax, [esp + 4]
push eax
push dword [ebp + 0x14]
call fcn.00405e20
add esp, 0xc
mov edi, eax
movzx eax, byte [esp + 0x85]
mov dword [esp + 0x14], eax
mov dword [esp], 0xf3f6f5f8
mov dword [esp + 4], 0xfbf8facb
mov word [esp + 8], 0x59d1
mov dword [esp + 0xa], 0
mov byte [esp + 0xe], 0
or edi, dword [esp + 0x18]
xor ecx, ecx
mov edx, 0xe8
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + ecx]
mov ebx, esi
not ebx
mov eax, ebx
and eax, 0x71
or ebx, 0x8e
add esi, ebx
inc esi
or esi, eax
lea eax, [ecx + 0x68a23b18]
or eax, 0x71
add eax, edx
mov ebx, ecx
and ebx, 0xe
xor ebx, 8
or ebx, eax
xor ebx, esi
add bl, 0x88
mov byte [esp + ecx], bl
inc ecx
dec edx
cmp ecx, 0xf
jne 0x421f70
mov eax, dword [esp + 0x1c]
cmp dword [esp + 0x10], eax
setne bl
push dword [esp + 0x14]
lea eax, [esp + 4]
push eax
push dword [ebp + 0x14]
call fcn.00405e20
add esp, 0xc
or edi, eax
sete al
and al, bl
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret