Function at 0x423ae0
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 0x423bdc
mov edi, dword [ebp + 0x10]
mov esi, dword [ebp + 8]
lea ebx, [esp + 0x20]
push 0x120
push 0
push ebx
call fcn.0040cd50
add esp, 0xc
mov ecx, esi
push 0
push 0
push 0x120
push ebx
push edi
push dword [ebp + 0xc]
call fcn.00440a70
test eax, eax
js 0x423bdc
mov dword [esp], 0x61f001e
mov byte [esp + 4], 0x64
mov dword [esp + 5], 0
mov word [esp + 9], 0
mov eax, 0x78ddf268
mov ecx, 0x87220d97
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + eax - 0x78ddf268]
mov edx, eax
and edx, edi
mov esi, edx
and esi, 0x7d
mov ebx, edx
and ebx, 2
or edx, 2
imul edx, ebx
xor ebx, 2
imul ebx, esi
add edx, ebx
mov esi, edx
not esi
and esi, eax
and edx, ecx
sub edx, esi
mov esi, edx
xor esi, edi
not edx
and edx, edi
add edx, edx
sub edx, esi
add edx, 0xa3aa43f7
mov esi, edx
and esi, 1
or edx, 1
add edx, esi
mov byte [esp + eax - 0x78ddf268], dl
inc eax
dec ecx
cmp eax, 0x78ddf273
jne 0x423b60
cmp byte [esp + 0x3f], 0
js 0x423be3
lea eax, [esp + 0x28]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.004060c0
add esp, 0xc
mov al, 1
mov dword [esp + 0x10], eax
jmp 0x423c3e
xor eax, eax
jmp 0x424015
mov ebx, dword [esp + 0x28]
mov esi, dword [esp + 0x2c]
mov eax, ebx
or eax, esi
je 0x423c36
mov edi, dword [esp + 0x30]
inc edi
push edi
call fcn.0040cbc0
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.00440a70
test eax, eax
setns al
mov dword [esp + 0x10], eax
js 0x423c2b
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.004060c0
add esp, 0xc
push edi
call fcn.0040cbd0
add esp, 4
jmp 0x423c3e
mov dword [esp + 0x10], 0
mov dword [esp], 0x9ea6b09e
mov word [esp + 4], 0xed51
mov dword [esp + 6], 0
mov eax, 0x3216e97c
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax - 0x3216e97c]
lea edx, [eax - 0x3216e900]
or edx, eax
and edx, ecx
mov esi, edx
and esi, 0xfffffffd
mov edi, edx
or edi, 0xfffffffd
inc edi
imul edi, esi
mov esi, edx
and esi, 2
or edx, 2
imul edx, esi
add edi, ecx
sub edi, edx
lea edx, [eax + ecx]
not edx
lea ecx, [eax + edi]
add ecx, 0x93
and edx, 1
or ecx, 1
add ecx, edx
mov byte [esp + eax - 0x3216e97c], cl
inc eax
cmp eax, 0x3216e986
jne 0x423c60
cmp byte [esp + 0x11f], 0
js 0x423cd8
lea eax, [esp + 0x108]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.004060c0
add esp, 0xc
mov bl, 1
jmp 0x423d32
mov ebx, dword [esp + 0x108]
mov esi, dword [esp + 0x10c]
mov eax, ebx
or eax, esi
je 0x423d30
mov edi, dword [esp + 0x110]
inc edi
push edi
call fcn.0040cbc0
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.00440a70
test eax, eax
setns bl
js 0x423d25
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.004060c0
add esp, 0xc
push edi
call fcn.0040cbd0
add esp, 4
jmp 0x423d32
xor ebx, ebx
mov edx, dword [esp + 0x10]
and dl, bl
mov dword [esp], 0xbdbfba4c
mov dword [esp + 4], 0xb2454249
mov byte [esp + 8], 0x2c
mov word [esp + 9], 0
mov byte [esp + 0xb], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0xb7
xor cl, byte [esp + eax]
add cl, 0x6d
mov byte [esp + eax], cl
inc eax
cmp eax, 0xc
jne 0x423d60
cmp byte [esp + 0x57], 0
js 0x423d96
lea eax, [esp + 0x40]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
mov esi, edx
call fcn.004060c0
mov edx, esi
add esp, 0xc
mov bl, 1
jmp 0x423def
mov ebx, dword [esp + 0x40]
mov esi, dword [esp + 0x44]
mov eax, ebx
or eax, esi
je 0x423ded
mov dword [esp + 0x10], edx
mov edi, dword [esp + 0x48]
inc edi
push edi
call fcn.0040cbc0
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.00440a70
test eax, eax
setns bl
js 0x423dde
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.004060c0
add esp, 0xc
push edi
call fcn.0040cbd0
add esp, 4
mov edx, dword [esp + 0x10]
jmp 0x423def
xor ebx, ebx
and dl, bl
mov dword [esp + 0x10], edx
mov dword [esp], 0xbbb640b0
mov byte [esp + 4], 0x24
mov dword [esp + 5], 0
mov eax, 0x38
mov ecx, 0xc7
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + eax - 0x38]
mov edx, ecx
xor edx, eax
and edx, esi
xor edx, eax
add dl, 0xe8
mov byte [esp + eax - 0x38], dl
inc eax
dec ecx
cmp eax, 0x41
jne 0x423e20
cmp byte [esp + 0x6f], 0
js 0x423e59
lea eax, [esp + 0x58]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.004060c0
add esp, 0xc
mov bl, 1
jmp 0x423eaa
mov ebx, dword [esp + 0x58]
mov esi, dword [esp + 0x5c]
mov eax, ebx
or eax, esi
je 0x423ea8
mov edi, dword [esp + 0x60]
inc edi
push edi
call fcn.0040cbc0
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.00440a70
test eax, eax
setns bl
js 0x423e9d
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.004060c0
add esp, 0xc
push edi
call fcn.0040cbd0
add esp, 4
jmp 0x423eaa
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], 0xbab6afbb
mov dword [esp + 4], 0x3cafbcb2
mov dword [esp + 8], 0xd9435353
mov dword [esp + 0xc], 0
xor edx, edx
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ebx, edx
add bl, 0x79
xor bl, byte [esp + edx]
add bl, 0xa3
mov byte [esp + edx], bl
inc edx
cmp edx, 0x10
jne 0x423ef0
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], ecx
fild qword [esp + 0x18]
sub esp, 0x10
lea esi, [esp + 0x10]
mov dword [esp + 4], esi
mov eax, dword [ebp + 0x14]
mov dword [esp], eax
fstp qword [esp + 8]
call fcn.00406110
add esp, 0x10
mov edi, eax
movzx eax, byte [esp + 0x78]
mov dword [esp], 0x685596a1
mov dword [esp + 4], 0x6d6f5a59
mov dword [esp + 8], 0xf15d
xor ecx, ecx
nop
nop
nop
mov edx, ecx
add dl, 0xfe
xor dl, byte [esp + ecx]
add dl, 0xa
mov byte [esp + ecx], dl
inc ecx
cmp ecx, 0xc
jne 0x423f50
push eax
push esi
push dword [ebp + 0x14]
call fcn.004061a0
add esp, 0xc
mov esi, eax
movzx eax, byte [esp + 0x79]
mov dword [esp + 0x14], eax
mov dword [esp], 0xb3b6b5b8
mov dword [esp + 4], 0xbbb8ba4b
mov dword [esp + 8], 0x59d1
mov byte [esp + 0xc], 0
or esi, edi
xor ecx, ecx
mov edx, 0x47
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + ecx]
mov eax, edx
and eax, 0x7c
mov ebx, ecx
and ebx, 3
or ebx, eax
lea eax, [ecx + 0x3ad5f7b8]
xor ebx, 0xfc
or ebx, eax
lea eax, [ecx + 0x1d6afbb8]
and ebx, edi
or eax, edi
xor eax, ebx
add eax, 0x94b3f187
mov edi, eax
and edi, 0x67
xor eax, 0x67
lea eax, [eax + edi*2]
add al, 0x7a
mov byte [esp + ecx], al
inc ecx
dec edx
cmp ecx, 0xd
jne 0x423fb0
push dword [esp + 0x14]
lea eax, [esp + 4]
push eax
push dword [ebp + 0x14]
call fcn.004061a0
add esp, 0xc
or esi, eax
sete cl
mov eax, dword [esp + 0x10]
and al, cl
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret