Function at 0x4223c0
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 0x42249a
mov edi, dword [ebp + 0x10]
mov esi, dword [ebp + 8]
lea ebx, [esp + 0x28]
push 0x120
push 0
push ebx
call fcn.0040ce90
add esp, 0xc
mov ecx, esi
push 0
push 0
push 0x120
push ebx
push edi
push dword [ebp + 0xc]
call fcn.0043f370
test eax, eax
js 0x42249a
mov dword [esp + 4], 0x42794c76
mov byte [esp + 8], 0xe8
mov dword [esp + 9], 0
mov dword [esp + 0xc], 0
mov eax, 0x7c9780d7
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax - 0x7c9780d3]
xor ecx, eax
mov edx, ecx
and edx, 1
mov esi, 1
sub esi, ecx
and esi, 1
and ecx, 0xfe
or ecx, esi
lea ecx, [ecx + edx*2]
add cl, 0xcc
mov byte [esp + eax - 0x7c9780d3], cl
inc eax
cmp eax, 0x7c9780e3
jne 0x422440
cmp byte [esp + 0x47], 0
js 0x4224a1
lea eax, [esp + 0x30]
lea ecx, [esp + 4]
push eax
push ecx
push dword [ebp + 0x14]
call fcn.004062d0
add esp, 0xc
mov al, 1
mov dword [esp + 0x14], eax
jmp 0x4224fe
xor eax, eax
jmp 0x42297c
mov ebx, dword [esp + 0x30]
mov esi, dword [esp + 0x34]
mov eax, ebx
or eax, esi
je 0x4224f6
mov edi, dword [esp + 0x38]
inc edi
push edi
call fcn.0040ce10
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.0043f370
test eax, eax
setns al
mov dword [esp + 0x14], eax
js 0x4224eb
lea eax, [esp + 4]
push edi
push eax
push dword [ebp + 0x14]
call fcn.004062d0
add esp, 0xc
push edi
call fcn.0040ce20
add esp, 4
jmp 0x4224fe
mov dword [esp + 0x14], 0
mov dword [esp + 4], 0x1ee6f01e
mov dword [esp + 8], 0xadd1
lea eax, [esp + 4]
mov ecx, 0x63
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [eax]
lea edx, [edi + edi]
not edx
add edx, edi
mov esi, edi
and esi, 0x3b
and edx, 0x84
or edx, esi
xor edx, edi
xor edx, 0x3b
and edx, edi
or edx, ecx
and edi, ecx
not edx
or edx, edi
add dl, 0xf4
mov byte [eax], dl
inc eax
dec ecx
cmp ecx, 0x5b
jne 0x422520
cmp byte [esp + 0x127], 0
js 0x422578
lea eax, [esp + 0x110]
lea ecx, [esp + 4]
push eax
push ecx
push dword [ebp + 0x14]
call fcn.004062d0
add esp, 0xc
mov bl, 1
jmp 0x4225d4
mov ebx, dword [esp + 0x110]
mov esi, dword [esp + 0x114]
mov eax, ebx
or eax, esi
je 0x4225d2
mov edi, dword [esp + 0x118]
inc edi
push edi
call fcn.0040ce10
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.0043f370
test eax, eax
setns bl
js 0x4225c7
lea eax, [esp + 4]
push edi
push eax
push dword [ebp + 0x14]
call fcn.004062d0
add esp, 0xc
push edi
call fcn.0040ce20
add esp, 4
jmp 0x4225d4
xor ebx, ebx
mov eax, dword [esp + 0x14]
and al, bl
mov dword [esp + 0x14], eax
mov dword [esp + 4], 0xa5a7aab4
mov dword [esp + 8], 0xe2cdd2b9
mov byte [esp + 0xc], 0x64
mov dword [esp + 0xd], 0
mov byte [esp + 0x11], 0
xor eax, eax
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, eax
and esi, 0x16
mov edx, ecx
xor edx, 0x3b
add edx, esi
xor dl, byte [esp + ecx + 4]
add dl, 0xd9
mov byte [esp + ecx + 4], dl
inc ecx
add eax, 2
cmp ecx, 0xe
jne 0x422610
cmp byte [esp + 0x5f], 0
js 0x422650
lea eax, [esp + 0x48]
lea ecx, [esp + 4]
push eax
push ecx
push dword [ebp + 0x14]
call fcn.004062d0
add esp, 0xc
mov bl, 1
jmp 0x4226a3
mov ebx, dword [esp + 0x48]
mov esi, dword [esp + 0x4c]
mov eax, ebx
or eax, esi
je 0x4226a1
mov edi, dword [esp + 0x50]
inc edi
push edi
call fcn.0040ce10
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.0043f370
test eax, eax
setns bl
js 0x422696
lea eax, [esp + 4]
push edi
push eax
push dword [ebp + 0x14]
call fcn.004062d0
add esp, 0xc
push edi
call fcn.0040ce20
add esp, 4
jmp 0x4226a3
xor ebx, ebx
mov eax, dword [esp + 0x14]
and al, bl
mov dword [esp + 0x14], eax
mov dword [esp + 4], 0xb9baacbc
mov byte [esp + 8], 0xd0
mov word [esp + 9], 0
mov byte [esp + 0xb], 0
mov eax, 0xc73532cd
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x38cacd37]
xor ecx, eax
mov edx, 1
sub edx, ecx
not edx
and edx, 1
mov esi, ecx
and esi, 1
xor ecx, 1
add ecx, 0xfe
or ecx, esi
add ecx, edx
mov byte [esp + eax + 0x38cacd37], cl
inc eax
cmp eax, 0xc73532d5
jne 0x4226d0
cmp byte [esp + 0x77], 0
js 0x422727
lea eax, [esp + 0x60]
lea ecx, [esp + 4]
push eax
push ecx
push dword [ebp + 0x14]
call fcn.004062d0
add esp, 0xc
mov bl, 1
jmp 0x42277a
mov ebx, dword [esp + 0x60]
mov esi, dword [esp + 0x64]
mov eax, ebx
or eax, esi
je 0x422778
mov edi, dword [esp + 0x68]
inc edi
push edi
call fcn.0040ce10
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.0043f370
test eax, eax
setns bl
js 0x42276d
lea eax, [esp + 4]
push edi
push eax
push dword [ebp + 0x14]
call fcn.004062d0
add esp, 0xc
push edi
call fcn.0040ce20
add esp, 4
jmp 0x42277a
xor ebx, ebx
mov eax, dword [esp + 0x14]
and al, bl
mov dword [esp + 0x14], eax
mov edi, dword [esp + 0x128]
mov eax, dword [esp + 0x12c]
mov dword [esp + 0x18], eax
mov dword [esp + 4], 0xb6aea1bd
mov dword [esp + 8], 0xc0d5b8aa
mov dword [esp + 0xc], 0x67c1d5d5
mov byte [esp + 0x10], 0
mov ecx, 0x96d178ba
mov esi, 0x92e8745
nop
nop
nop
movzx ebx, byte [esp + ecx + 0x692e874a]
mov eax, ecx
xor eax, 0x1091500d
mov edx, ecx
or edx, 0x864028f2
and edx, eax
lea eax, [esi - 0x20000000]
and eax, esi
xor ebx, 0x1899540d
and eax, 0x808040d
or eax, edx
mov edx, ebx
and edx, eax
add eax, ebx
add edx, edx
sub eax, edx
mov edx, 0xef
sub edx, eax
add eax, 0x10
and edx, 0xb2
and eax, 0x4d
sub eax, edx
mov byte [esp + ecx + 0x692e874a], al
inc ecx
dec esi
cmp ecx, 0x96d178c7
jne 0x4227c0
mov dword [esp + 0x20], edi
mov eax, dword [esp + 0x18]
mov dword [esp + 0x24], eax
fild qword [esp + 0x20]
sub esp, 0x10
lea eax, [esp + 0x14]
mov dword [esp + 4], eax
mov eax, dword [ebp + 0x14]
mov dword [esp], eax
fstp qword [esp + 8]
call fcn.00406320
add esp, 0x10
mov edi, eax
movzx eax, byte [esp + 0x80]
mov dword [esp + 4], 0x43f0a07
mov dword [esp + 8], 0x7053637
mov word [esp + 0xc], 0x9733
mov dword [esp + 0xe], 0
mov word [esp + 0x12], 0
mov ecx, 0x25
mov edx, 0x1a
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov esi, edx
and esi, 0x10
mov ebx, ecx
and ebx, 0x2f
or ebx, esi
xor bl, byte [esp + ecx - 0x21]
xor bl, 0x90
add bl, 0xc7
mov byte [esp + ecx - 0x21], bl
inc ecx
dec edx
cmp ecx, 0x35
jne 0x422890
push eax
lea eax, [esp + 8]
push eax
push dword [ebp + 0x14]
call fcn.004063b0
add esp, 0xc
movzx ecx, byte [esp + 0x81]
mov dword [esp + 0x1c], ecx
mov dword [esp + 4], 0x211a1be4
mov dword [esp + 8], 0xd9dc22d1
mov word [esp + 0xc], 0xb72f
mov dword [esp + 0xe], 0
or eax, edi
mov dword [esp + 0x18], eax
mov ecx, 0x208be9d
mov edx, 0xfdf74162
nop
nop
nop
movzx edi, byte [esp + ecx - 0x208be99]
mov ebx, ecx
and ebx, edi
add ebx, ebx
sub ebx, edi
add ebx, edx
and ebx, ecx
add ebx, ebx
mov eax, ebx
not eax
and eax, ecx
and ebx, edx
sub eax, ebx
add eax, edi
mov edi, eax
and edi, 0xf5d446ec
mov esi, eax
and esi, 2
mov ebx, esi
xor ebx, 2
imul ebx, edi
or edi, 2
imul edi, esi
xor eax, 0xee
add eax, ebx
add eax, edi
inc al
mov byte [esp + ecx - 0x208be99], al
inc ecx
dec edx
cmp ecx, 0x208beab
jne 0x422900
push dword [esp + 0x1c]
lea eax, [esp + 8]
push eax
push dword [ebp + 0x14]
call fcn.004063b0
add esp, 0xc
or dword [esp + 0x18], 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