Function at 0x422cc0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x148
cmp byte [ebp + 0x18], 0
je 0x422d87
mov edi, dword [ebp + 0x10]
mov esi, dword [ebp + 8]
lea ebx, [esp + 0x20]
push 0x120
push 0
push ebx
call fcn.0040cc30
add esp, 0xc
mov ecx, esi
push 0
push 0
push 0x120
push ebx
push edi
push dword [ebp + 0xc]
call fcn.0043ed30
mov ecx, eax
xor eax, eax
test ecx, ecx
js 0x4231f1
mov dword [esp], 0x82998c96
mov byte [esp + 4], 0x28
mov dword [esp + 5], 0
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax]
mov ecx, eax
and ecx, 9
xor ecx, 0x3efcac79
mov esi, eax
and esi, 6
sub esi, ecx
lea ecx, [edx + edx]
not ecx
add ecx, edx
xor ecx, edx
and ecx, esi
xor ecx, edx
mov edx, ecx
and edx, 1
or ecx, 1
add ecx, edx
add cl, 0x5c
mov byte [esp + eax], cl
inc eax
cmp eax, 9
jne 0x422d30
cmp byte [esp + 0x3f], 0
js 0x422d8e
lea eax, [esp + 0x28]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.004062a0
add esp, 0xc
mov bl, 1
jmp 0x422ddf
xor eax, eax
jmp 0x4231f1
mov ebx, dword [esp + 0x28]
mov esi, dword [esp + 0x2c]
mov eax, ebx
or eax, esi
je 0x422ddd
mov edi, dword [esp + 0x30]
inc edi
push edi
call fcn.0040cbb0
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.0043ed30
test eax, eax
setns bl
js 0x422dd2
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.004062a0
add esp, 0xc
push edi
call fcn.0040cbc0
add esp, 4
jmp 0x422ddf
xor ebx, ebx
mov dword [esp], 0x362e2036
mov word [esp + 4], 0x8521
mov dword [esp + 6], 0
mov eax, 0x73c92a20
mov ecx, 0x186dabdf
nop
movzx esi, byte [esp + eax - 0x73c92a20]
mov edx, ecx
xor edx, eax
and edx, esi
xor edx, eax
add dl, 0x60
mov byte [esp + eax - 0x73c92a20], dl
inc eax
dec ecx
cmp eax, 0x73c92a2a
jne 0x422e00
mov dword [esp + 0x10], ebx
cmp byte [esp + 0x11f], 0
js 0x422e4b
lea eax, [esp + 0x108]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.004062a0
add esp, 0xc
mov bl, 1
jmp 0x422ea5
mov ebx, dword [esp + 0x108]
mov esi, dword [esp + 0x10c]
mov eax, ebx
or eax, esi
je 0x422ea3
mov edi, dword [esp + 0x110]
inc edi
push edi
call fcn.0040cbb0
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.0043ed30
test eax, eax
setns bl
js 0x422e98
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.004062a0
add esp, 0xc
push edi
call fcn.0040cbc0
add esp, 4
jmp 0x422ea5
xor ebx, ebx
mov edx, dword [esp + 0x10]
and dl, bl
mov dword [esp], 0xa5a7aab4
mov dword [esp + 4], 0x624d52b9
mov byte [esp + 8], 0xe4
mov dword [esp + 9], 0
mov byte [esp + 0xd], 0
xor eax, eax
nop
nop
mov ecx, eax
add cl, 0xfb
xor cl, byte [esp + eax]
add cl, 0x19
mov byte [esp + eax], cl
inc eax
cmp eax, 0xe
jne 0x422ed0
mov dword [esp + 0x10], edx
cmp byte [esp + 0x57], 0
js 0x422f06
lea eax, [esp + 0x40]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.004062a0
add esp, 0xc
mov bl, 1
jmp 0x422f57
mov ebx, dword [esp + 0x40]
mov esi, dword [esp + 0x44]
mov eax, ebx
or eax, esi
je 0x422f55
mov edi, dword [esp + 0x48]
inc edi
push edi
call fcn.0040cbb0
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.0043ed30
test eax, eax
setns bl
js 0x422f4a
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.004062a0
add esp, 0xc
push edi
call fcn.0040cbc0
add esp, 4
jmp 0x422f57
xor ebx, ebx
mov eax, dword [esp + 0x10]
and al, bl
mov ebx, eax
mov dword [esp], 0x7f6a6878
mov byte [esp + 4], 0xd4
mov dword [esp + 5], 0
mov byte [esp + 9], 0
mov eax, 0xf42e9bae
mov ecx, 0xd16451
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + eax + 0xbd16452]
mov edi, ecx
and edi, 0x900058
mov edx, eax
and edx, 0x800e93a7
or edx, edi
mov edi, esi
xor edi, 0x18
xor esi, 0xa7
or edi, edx
not edx
or edx, esi
and edx, edi
add dl, 0x9a
mov byte [esp + eax + 0xbd16452], dl
inc eax
dec ecx
cmp eax, 0xf42e9bb8
jne 0x422f90
mov dword [esp + 0x10], ebx
cmp byte [esp + 0x6f], 0
js 0x422ff2
lea eax, [esp + 0x58]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.004062a0
add esp, 0xc
mov bl, 1
jmp 0x423043
mov ebx, dword [esp + 0x58]
mov esi, dword [esp + 0x5c]
mov eax, ebx
or eax, esi
je 0x423041
mov edi, dword [esp + 0x60]
inc edi
push edi
call fcn.0040cbb0
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.0043ed30
test eax, eax
setns bl
js 0x423036
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.004062a0
add esp, 0xc
push edi
call fcn.0040cbc0
add esp, 4
jmp 0x423043
xor ebx, ebx
mov eax, dword [esp + 0x10]
and al, bl
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x120]
mov ecx, dword [esp + 0x124]
mov dword [esp], 0x2a323925
mov dword [esp + 4], 0x58352036
mov dword [esp + 8], 0x8b293d3d
mov word [esp + 0xc], 0
mov byte [esp + 0xe], 0
xor edx, edx
mov ebx, edx
or ebx, 0x92306e0
lea esi, [edx*2 + 0x12460dc1]
neg esi
add esi, edx
add esi, 0x92306e0
mov edi, esi
xor edi, 0x12
or esi, 0xd
and esi, edi
and ebx, 0xe2
or ebx, esi
xor bl, byte [esp + edx]
lea esi, [edx + edx]
xor bl, 0xd
add bl, 0xa0
mov byte [esp + edx], bl
xor edx, 1
and esi, 2
add edx, esi
cmp edx, 0xf
jb 0x423080
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], ecx
fild qword [esp + 0x18]
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.004062f0
add esp, 0x10
mov dword [esp + 0x14], eax
movzx eax, byte [esp + 0x78]
mov dword [esp], 0x641b666b
mov dword [esp + 4], 0x7b7d0a13
mov word [esp + 8], 0xe30f
mov dword [esp + 0xa], 0
mov byte [esp + 0xe], 0
mov ecx, 0xd4
mov edx, 0xfb435e2b
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + edx + 0x4bca1d5]
mov ebx, ecx
xor ebx, edx
and ebx, edi
xor ebx, edx
lea edi, [ebx + ebx]
mov esi, edi
and esi, 0x50
xor ebx, 0x28
add ebx, esi
and edi, 2
xor ebx, 1
add ebx, edi
mov byte [esp + edx + 0x4bca1d5], bl
dec ecx
inc edx
cmp ecx, 0xc5
jne 0x423130
push eax
lea edi, [esp + 4]
push edi
push dword [ebp + 0x14]
call fcn.00406380
add esp, 0xc
or eax, dword [esp + 0x14]
sete cl
movzx eax, byte [esp + 0x79]
mov dword [esp], 0x631e1d68
mov dword [esp + 4], 0x5b585a4b
mov dword [esp + 8], 0xa921
mov byte [esp + 0xc], 0
mov ebx, dword [esp + 0x10]
and bl, cl
mov ecx, 0x86125f5c
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + ecx + 0x79eda0a4]
xor esi, ecx
mov edx, esi
xor edx, 0xcc
or esi, 0x33
and edx, esi
add edx, esi
inc dl
mov byte [esp + ecx + 0x79eda0a4], dl
inc ecx
cmp ecx, 0x86125f69
jne 0x4231b0
push eax
push edi
push dword [ebp + 0x14]
call fcn.00406380
add esp, 0xc
test eax, eax
setne al
xor al, bl
and al, bl
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret