Function at 0x421f40
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x158
cmp byte [ebp + 0x18], 0
je 0x422007
mov edi, dword [ebp + 0x10]
mov esi, dword [ebp + 8]
lea ebx, [esp + 0x30]
push 0x120
push 0
push ebx
call fcn.0040cb90
add esp, 0xc
mov ecx, esi
push 0
push 0
push 0x120
push ebx
push edi
push dword [ebp + 0xc]
call fcn.00440b10
test eax, eax
js 0x422007
mov dword [esp], 0x1a1318ea
mov byte [esp + 4], 0x7c
mov dword [esp + 5], 0
mov eax, esp
mov ecx, 0x15
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [eax]
lea edx, [ecx - 0x140e7000]
mov edi, ecx
and edi, esi
and edx, 0xdfffffff
or edx, esi
xor edx, 0xdfffffff
or edx, edi
mov esi, edx
not esi
add edx, 0x6d
and esi, 1
or edx, 1
add edx, esi
mov byte [eax], dl
inc eax
dec ecx
cmp ecx, 0xc
jne 0x421fb0
cmp byte [esp + 0x4f], 0
js 0x42200e
lea eax, [esp + 0x38]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405ea0
add esp, 0xc
mov al, 1
mov dword [esp + 0x10], eax
jmp 0x422069
xor eax, eax
jmp 0x422517
mov ebx, dword [esp + 0x38]
mov esi, dword [esp + 0x3c]
mov eax, ebx
or eax, esi
je 0x422061
mov edi, dword [esp + 0x40]
inc edi
push edi
call fcn.0040ca00
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.00440b10
test eax, eax
setns al
mov dword [esp + 0x10], eax
js 0x422056
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405ea0
add esp, 0xc
push edi
call fcn.0040ca10
add esp, 4
jmp 0x422069
mov dword [esp + 0x10], 0
mov dword [esp], 0xb2464cbe
mov word [esp + 4], 0x2f43
mov dword [esp + 6], 0
mov byte [esp + 0xa], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax]
lea edx, [eax - 0x530993c9]
lea esi, [eax + 0x59ecd937]
and esi, ecx
or edx, ecx
xor edx, esi
mov ecx, edx
and ecx, 1
xor edx, 1
lea ecx, [edx + ecx*2]
add cl, 0xec
mov byte [esp + eax], cl
inc eax
cmp eax, 0xb
jne 0x422090
cmp byte [esp + 0x12f], 0
js 0x4220e5
lea eax, [esp + 0x118]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405ea0
add esp, 0xc
mov al, 1
mov dword [esp + 0x20], eax
jmp 0x422149
mov ebx, dword [esp + 0x118]
mov esi, dword [esp + 0x11c]
mov eax, ebx
or eax, esi
je 0x422141
mov edi, dword [esp + 0x120]
inc edi
push edi
call fcn.0040ca00
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.00440b10
test eax, eax
setns al
mov dword [esp + 0x20], eax
js 0x422136
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405ea0
add esp, 0xc
push edi
call fcn.0040ca10
add esp, 4
jmp 0x422149
mov dword [esp + 0x20], 0
mov dword [esp], 0xa5a7aa94
mov dword [esp + 4], 0xa28db299
mov byte [esp + 8], 0x24
mov dword [esp + 9], 0
mov byte [esp + 0xd], 0
mov eax, 0xd3e463cb
mov ecx, 0x2c1b9c34
mov edx, 0x53e463cc
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + eax + 0x2c1b9c35]
lea ebx, [ecx - 0x2c1b9c00]
xor ebx, eax
and ebx, edi
xor ebx, eax
not ebx
or ebx, ecx
add ebx, edx
add ebx, ebx
mov esi, ebx
xor esi, eax
and ebx, ecx
add ebx, ebx
sub ebx, esi
mov esi, ebx
xor esi, edi
not ebx
and ebx, edi
add ebx, ebx
sub ebx, esi
add bl, 9
mov byte [esp + eax + 0x2c1b9c35], bl
inc eax
dec ecx
inc edx
cmp eax, 0xd3e463d9
jne 0x422180
cmp byte [esp + 0x67], 0
js 0x4221e8
lea eax, [esp + 0x50]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405ea0
add esp, 0xc
mov al, 1
mov dword [esp + 0x14], eax
jmp 0x422243
mov ebx, dword [esp + 0x50]
mov esi, dword [esp + 0x54]
mov eax, ebx
or eax, esi
je 0x42223b
mov edi, dword [esp + 0x58]
inc edi
push edi
call fcn.0040ca00
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.00440b10
test eax, eax
setns al
mov dword [esp + 0x14], eax
js 0x422230
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405ea0
add esp, 0xc
push edi
call fcn.0040ca10
add esp, 4
jmp 0x422243
mov dword [esp + 0x14], 0
mov dword [esp], 0xb9baacbc
mov byte [esp + 4], 0xd0
mov dword [esp + 5], 0
mov dword [esp + 8], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0xcd
xor cl, byte [esp + eax]
dec cl
mov byte [esp + eax], cl
inc eax
cmp eax, 0xc
jne 0x422270
cmp byte [esp + 0x7f], 0
js 0x4222a5
lea eax, [esp + 0x68]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405ea0
add esp, 0xc
mov al, 1
mov dword [esp + 0x1c], eax
jmp 0x422300
mov esi, dword [esp + 0x68]
mov edi, dword [esp + 0x6c]
mov eax, esi
or eax, edi
je 0x4222f8
mov ebx, dword [esp + 0x70]
inc ebx
push ebx
call fcn.0040ca00
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push ebx
mov ebx, eax
push eax
push edi
push esi
call fcn.00440b10
test eax, eax
setns al
mov dword [esp + 0x1c], eax
js 0x4222ed
mov eax, esp
push ebx
push eax
push dword [ebp + 0x14]
call fcn.00405ea0
add esp, 0xc
push ebx
call fcn.0040ca10
add esp, 4
jmp 0x422300
mov dword [esp + 0x1c], 0
mov eax, dword [esp + 0x130]
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x134]
mov dword [esp + 0x24], eax
mov dword [esp], 0xb6aea1bd
mov dword [esp + 4], 0xc0d5b8aa
mov dword [esp + 8], 0x67c1d5d5
mov byte [esp + 0xc], 0
mov edx, esp
mov ecx, 0xc5aed1c5
nop
nop
nop
nop
nop
nop
nop
movzx eax, byte [edx]
mov edi, ecx
or edi, eax
mov ebx, eax
mov esi, ecx
xor esi, eax
sub eax, esi
not ebx
and ebx, ecx
add eax, ebx
mov esi, eax
or esi, edi
xor eax, edi
add eax, edi
not eax
add eax, esi
add al, 0xde
mov byte [edx], al
inc edx
dec ecx
cmp ecx, 0xc5aed1b8
jne 0x422340
mov eax, dword [esp + 0x18]
mov dword [esp + 0x28], eax
mov eax, dword [esp + 0x24]
mov dword [esp + 0x2c], eax
fild qword [esp + 0x28]
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.00405ef0
add esp, 0x10
mov dword [esp + 0x18], eax
mov eax, dword [esp + 0x10]
and al, byte [esp + 0x20]
mov ecx, dword [esp + 0x14]
and cl, byte [esp + 0x1c]
and cl, al
mov dword [esp + 0x14], ecx
movzx eax, byte [esp + 0x88]
mov dword [esp + 0x10], eax
mov dword [esp], 0xbc4bbe4b
mov dword [esp + 4], 0xbbb54a43
mov word [esp + 8], 0x5347
mov dword [esp + 0xa], 0
mov word [esp + 0xe], 0
mov ecx, 0xbe54e938
mov edx, 0xc8
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + ecx + 0x41ab16c8]
lea edi, [ecx - 1]
lea ebx, [edx - 0xc8]
and ebx, 7
and edi, 0x78
or edi, ebx
xor edi, 0xf8
and edi, esi
not esi
or esi, edx
lea ebx, [ecx + esi]
mov eax, edi
not eax
and eax, ebx
xor edi, ebx
add edi, esi
sub edi, eax
add edi, ecx
mov eax, edi
and eax, 0xc85771ec
xor edi, 0x485771ec
lea ebx, [edi + eax*2]
add ebx, 0x7ca24593
mov eax, ebx
xor eax, 0x92
and ebx, 0x6d
add ebx, ebx
sub ebx, eax
mov byte [esp + ecx + 0x41ab16c8], bl
inc ecx
dec edx
cmp ecx, 0xbe54e948
jne 0x422400
push dword [esp + 0x10]
lea eax, [esp + 4]
push eax
push dword [ebp + 0x14]
call fcn.00405f80
add esp, 0xc
mov edi, eax
movzx eax, byte [esp + 0x89]
mov dword [esp + 0x10], eax
mov dword [esp], 0xb9bebfcc
mov dword [esp + 4], 0xc1bcbec9
mov dword [esp + 8], 0xd3b3
mov byte [esp + 0xc], 0
or edi, dword [esp + 0x18]
xor ecx, ecx
xor ebx, ebx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + ebx]
mov eax, ecx
and eax, 0xe
mov edx, ebx
xor edx, 0xc4ecf5f7
add edx, eax
lea eax, [esi + esi]
not eax
add eax, esi
or eax, edx
not edx
or edx, esi
and eax, edx
lea edx, [eax + eax]
not edx
add edx, eax
add dl, 0x2d
mov byte [esp + ebx], dl
inc ebx
add ecx, 2
cmp ebx, 0xd
jne 0x4224c0
push dword [esp + 0x10]
lea eax, [esp + 4]
push eax
push dword [ebp + 0x14]
call fcn.00405f80
add esp, 0xc
or edi, eax
sete cl
mov eax, dword [esp + 0x14]
and al, cl
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret