Function at 0x421b00
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x160
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 + 0x34]
push 0
push 0
push eax
push edx
push dword [ebp + 0x10]
push dword [ebp + 0xc]
call fcn.0043d080
test eax, eax
js 0x421bb2
mov dword [esp + 4], 0xa6afa0ae
mov byte [esp + 8], 0xc4
mov word [esp + 9], 0
mov byte [esp + 0xb], 0
mov eax, 0x6385a150
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax - 0x6385a14c]
xor ecx, eax
add ecx, 0xe63d96f
mov edx, ecx
xor edx, 0xfffffffe
or ecx, 1
and edx, ecx
xor ecx, edx
lea ecx, [ecx + edx*2]
mov byte [esp + eax - 0x6385a14c], cl
inc eax
cmp eax, 0x6385a158
jne 0x421b60
cmp byte [esp + 0x53], 0
js 0x421bb9
lea eax, [esp + 0x3c]
lea ecx, [esp + 4]
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405df0
add esp, 0xc
mov al, 1
mov dword [esp + 0x24], eax
jmp 0x421c1a
xor eax, eax
jmp 0x422084
mov esi, dword [esp + 0x3c]
mov ebx, dword [esp + 0x40]
mov eax, esi
or eax, ebx
je 0x421c0e
mov edi, dword [esp + 0x44]
inc edi
push edi
call fcn.0040c6f0
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.0043d080
test eax, eax
setns al
mov dword [esp + 0x24], eax
js 0x421c03
lea eax, [esp + 4]
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405df0
add esp, 0xc
push edi
call fcn.0040c700
add esp, 4
jmp 0x421c16
mov dword [esp + 0x24], 0
movzx ebx, byte [ebp + 0x18]
movzx eax, bl
mov dword [esp + 0x1c], eax
lea eax, [eax*8 + 0xe8]
mov dword [esp + 4], 0x4e46504e
mov word [esp + 8], 0x3d51
mov dword [esp + 0xa], 0
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + ecx + 4]
lea edi, [ecx + 0x7d208234]
lea edx, [esi + esi]
not edx
add edx, esi
and edx, edi
mov edi, 0xcb
sub edi, ecx
and edi, esi
mov esi, edx
xor esi, edi
not edi
and edi, edx
add esi, edx
sub esi, edi
mov edx, esi
and edx, 0x7b
xor esi, 0xfb
lea edx, [esi + edx*2]
inc dl
mov byte [esp + ecx + 4], dl
mov edx, ecx
and edx, 1
xor ecx, 1
lea ecx, [ecx + edx*2]
cmp ecx, 0xa
jb 0x421c50
lea ecx, [esp + eax]
add ecx, 0x34
cmp byte [esp + eax + 0x4b], 0
js 0x421cc3
lea eax, [esp + 4]
push ecx
push eax
push dword [ebp + 0x14]
call fcn.00405df0
add esp, 0xc
mov al, 1
mov dword [esp + 0x20], eax
jmp 0x421d1c
mov ebx, dword [ecx]
mov esi, dword [ecx + 4]
mov eax, ebx
or eax, esi
je 0x421d14
mov edi, dword [ecx + 8]
inc edi
push edi
call fcn.0040c6f0
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.0043d080
test eax, eax
setns al
mov dword [esp + 0x20], eax
js 0x421d09
lea eax, [esp + 4]
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405df0
add esp, 0xc
push edi
call fcn.0040c700
add esp, 4
jmp 0x421d1c
mov dword [esp + 0x20], 0
mov dword [esp + 4], 0xadafaabc
mov dword [esp + 8], 0x52a5a2b9
mov byte [esp + 0xc], 0xdc
mov word [esp + 0xd], 0
mov byte [esp + 0xf], 0
xor eax, eax
nop
mov ecx, eax
add cl, 0x4f
xor cl, byte [esp + eax + 4]
add cl, 0x75
mov byte [esp + eax + 4], cl
inc eax
cmp eax, 0xc
jne 0x421d40
cmp byte [esp + 0x6b], 0
js 0x421d7a
lea eax, [esp + 0x54]
lea ecx, [esp + 4]
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405df0
add esp, 0xc
mov al, 1
mov dword [esp + 0x18], eax
jmp 0x421dd7
mov ebx, dword [esp + 0x54]
mov esi, dword [esp + 0x58]
mov eax, ebx
or eax, esi
je 0x421dcf
mov edi, dword [esp + 0x5c]
inc edi
push edi
call fcn.0040c6f0
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.0043d080
test eax, eax
setns al
mov dword [esp + 0x18], eax
js 0x421dc4
lea eax, [esp + 4]
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405df0
add esp, 0xc
push edi
call fcn.0040c700
add esp, 4
jmp 0x421dd7
mov dword [esp + 0x18], 0
mov dword [esp + 4], 0xf7fae8f8
mov byte [esp + 8], 0xc
mov dword [esp + 9], 0
lea eax, [esp + 4]
mov ecx, 0x9bf80bd
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [eax]
mov edx, ecx
or edx, esi
lea edi, [ecx - 0x9bf8000]
and edi, esi
sub edx, edi
lea esi, [edx + edx]
not esi
mov ebx, 0xcf427c4a
sub ebx, edx
sub ebx, esi
lea edi, [edx + esi]
add edi, 0x30bd83b5
mov esi, edi
mov edx, ebx
and ebx, 0x2f
and edi, 0xd0
or edi, ebx
not edx
and edx, 1
or edx, edi
and esi, 1
xor edx, 0x2e
add edx, esi
mov byte [eax], dl
inc eax
dec ecx
cmp ecx, 0x9bf80b4
jne 0x421e00
cmp byte [esp + 0x83], 0
js 0x421e79
lea eax, [esp + 0x6c]
lea ecx, [esp + 4]
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405df0
add esp, 0xc
mov al, 1
mov dword [esp + 0x14], eax
jmp 0x421ed6
mov esi, dword [esp + 0x6c]
mov edi, dword [esp + 0x70]
mov eax, esi
or eax, edi
je 0x421ece
mov ebx, dword [esp + 0x74]
inc ebx
push ebx
call fcn.0040c6f0
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.0043d080
test eax, eax
setns al
mov dword [esp + 0x14], eax
js 0x421ec3
lea eax, [esp + 4]
push ebx
push eax
push dword [ebp + 0x14]
call fcn.00405df0
add esp, 0xc
push ebx
call fcn.0040c700
add esp, 4
jmp 0x421ed6
mov dword [esp + 0x14], 0
mov ecx, dword [esp + 0x1c]
mov eax, dword [esp + ecx*8 + 0x134]
mov ecx, dword [esp + ecx*8 + 0x138]
mov dword [esp + 4], 0xbea6b1a5
mov dword [esp + 8], 0xb0adb8aa
mov dword [esp + 0xc], 0x5fb1adad
mov word [esp + 0x10], 0
mov byte [esp + 0x12], 0
mov edx, 0x369763c7
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + edx - 0x369763c3]
lea edi, [edx - 0x369763b9]
and edi, esi
add edi, edi
sub esi, edi
add esi, edx
mov edi, esi
and edi, 0x23
xor esi, 0xa3
lea ebx, [esi + edi*2]
add bl, 0x5e
mov byte [esp + edx - 0x369763c3], bl
inc edx
cmp edx, 0x369763d6
jne 0x421f20
mov dword [esp + 0x28], eax
mov dword [esp + 0x2c], ecx
fild qword [esp + 0x28]
sub esp, 0x10
lea esi, [esp + 0x14]
mov dword [esp + 4], esi
mov eax, dword [ebp + 0x14]
mov dword [esp], eax
fstp qword [esp + 8]
call fcn.00405e40
add esp, 0x10
mov dword [esp + 0x1c], eax
movzx eax, byte [esp + 0x8c]
mov dword [esp + 4], 0x908d9299
mov dword [esp + 8], 0x95938681
mov dword [esp + 0xc], 0x399d
mov ecx, 0x9f206c08
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx + 0x60df93fc]
mov ebx, edx
and ebx, ecx
add bl, bl
sub dl, bl
movzx edx, dl
add edx, ecx
add dl, 0xd8
mov byte [esp + ecx + 0x60df93fc], dl
inc ecx
cmp ecx, 0x9f206c14
jne 0x421fb0
push eax
push esi
push dword [ebp + 0x14]
call fcn.00405ed0
add esp, 0xc
mov edi, eax
movzx eax, byte [esp + 0x8d]
mov dword [esp + 4], 0xb1aaabbc
mov dword [esp + 8], 0x49b4b2c1
mov word [esp + 0xc], 0xdf57
mov dword [esp + 0xe], 0
mov ecx, 0x85d8cbf9
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx + 0x7a27340b]
xor edx, ecx
mov ebx, 1
sub ebx, edx
not ebx
or ebx, edx
and ebx, 1
lea esi, [edx + edx]
and esi, 2
sub edx, esi
lea edx, [edx + ebx*2]
add dl, 0x23
mov byte [esp + ecx + 0x7a27340b], dl
inc ecx
cmp ecx, 0x85d8cc07
jne 0x422020
push eax
lea eax, [esp + 8]
push eax
push dword [ebp + 0x14]
call fcn.00405ed0
add esp, 0xc
mov ecx, dword [esp + 0x24]
and cl, byte [esp + 0x20]
mov edx, dword [esp + 0x18]
and dl, byte [esp + 0x14]
and dl, cl
or edi, dword [esp + 0x1c]
or edi, eax
sete al
and al, dl
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret