Function at 0x423a90
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 0x423b2c
mov edi, dword [ebp + 0x10]
mov esi, dword [ebp + 8]
lea ebx, [esp + 0x20]
push 0x120
push 0
push ebx
call fcn.0040cf00
add esp, 0xc
mov ecx, esi
push 0
push 0
push 0x120
push ebx
push edi
push dword [ebp + 0xc]
call fcn.0043f410
test eax, eax
js 0x423b2c
mov dword [esp], 0xa03380a
mov byte [esp + 4], 0x94
mov dword [esp + 5], 0
mov eax, 0x64909ba6
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax - 0x64909ba6]
xor ecx, eax
add ecx, 0x92cf5c1
mov edx, ecx
and edx, 1
xor ecx, 1
lea ecx, [ecx + edx*2]
mov byte [esp + eax - 0x64909ba6], cl
inc eax
cmp eax, 0x64909baf
jne 0x423ae0
cmp byte [esp + 0x3f], 0
js 0x423b33
lea eax, [esp + 0x28]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00406310
add esp, 0xc
mov al, 1
mov dword [esp + 0x10], eax
jmp 0x423b8e
xor eax, eax
jmp 0x423fa6
mov ebx, dword [esp + 0x28]
mov esi, dword [esp + 0x2c]
mov eax, ebx
or eax, esi
je 0x423b86
mov edi, dword [esp + 0x30]
inc edi
push edi
call fcn.0040ce80
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.0043f410
test eax, eax
setns al
mov dword [esp + 0x10], eax
js 0x423b7b
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00406310
add esp, 0xc
push edi
call fcn.0040ce90
add esp, 4
jmp 0x423b8e
mov dword [esp + 0x10], 0
mov dword [esp], 0xe6a2ac9a
mov word [esp + 4], 0x73d7
mov dword [esp + 6], 0
mov word [esp + 0xa], 0
xor eax, eax
nop
nop
nop
mov ecx, eax
add cl, 0x3d
xor cl, byte [esp + eax]
add cl, 0xcf
mov byte [esp + eax], cl
inc eax
cmp eax, 0xc
jne 0x423bb0
cmp byte [esp + 0x11f], 0
js 0x423be8
lea eax, [esp + 0x108]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00406310
add esp, 0xc
mov bl, 1
jmp 0x423c42
mov ebx, dword [esp + 0x108]
mov esi, dword [esp + 0x10c]
mov eax, ebx
or eax, esi
je 0x423c40
mov edi, dword [esp + 0x110]
inc edi
push edi
call fcn.0040ce80
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.0043f410
test eax, eax
setns bl
js 0x423c35
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00406310
add esp, 0xc
push edi
call fcn.0040ce90
add esp, 4
jmp 0x423c42
xor ebx, ebx
mov eax, dword [esp + 0x10]
and al, bl
mov dword [esp + 0x10], eax
mov dword [esp], 0xa5a7aa94
mov dword [esp + 4], 0xa28db299
mov byte [esp + 8], 0x24
mov dword [esp + 9], 0
mov word [esp + 0xd], 0
mov eax, 0x29aefe8b
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax - 0x29aefe8b]
lea edx, [eax - 0x29aefe00]
and edx, ecx
mov esi, edx
or esi, 0xfffffffd
inc esi
mov edi, edx
and edi, 0xffffff9d
imul edi, esi
mov esi, edx
and esi, 2
or edx, 2
imul edx, esi
add edi, ecx
sub edi, edx
add edi, eax
mov edx, edi
and edx, 0x48
xor edi, 0x48
lea edx, [edi + edx*2]
add ecx, eax
and ecx, 1
xor edx, 1
lea ecx, [edx + ecx*2]
mov byte [esp + eax - 0x29aefe8b], cl
inc eax
cmp eax, 0x29aefe9a
jne 0x423c80
cmp byte [esp + 0x57], 0
js 0x423cf2
lea eax, [esp + 0x40]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00406310
add esp, 0xc
mov bl, 1
jmp 0x423d43
mov ebx, dword [esp + 0x40]
mov esi, dword [esp + 0x44]
mov eax, ebx
or eax, esi
je 0x423d41
mov edi, dword [esp + 0x48]
inc edi
push edi
call fcn.0040ce80
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.0043f410
test eax, eax
setns bl
js 0x423d36
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00406310
add esp, 0xc
push edi
call fcn.0040ce90
add esp, 4
jmp 0x423d43
xor ebx, ebx
mov eax, dword [esp + 0x10]
and al, bl
mov dword [esp + 0x10], eax
mov dword [esp], 0xd7dae8d8
mov byte [esp + 4], 0x4c
mov dword [esp + 5], 0
mov word [esp + 9], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0xf2
xor cl, byte [esp + eax]
add cl, 0x46
mov byte [esp + eax], cl
inc eax
cmp eax, 0xb
jne 0x423d70
cmp byte [esp + 0x6f], 0
js 0x423da2
lea eax, [esp + 0x58]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00406310
add esp, 0xc
mov bl, 1
jmp 0x423df3
mov ebx, dword [esp + 0x58]
mov esi, dword [esp + 0x5c]
mov eax, ebx
or eax, esi
je 0x423df1
mov edi, dword [esp + 0x60]
inc edi
push edi
call fcn.0040ce80
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.0043f410
test eax, eax
setns bl
js 0x423de6
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00406310
add esp, 0xc
push edi
call fcn.0040ce90
add esp, 4
jmp 0x423df3
xor ebx, ebx
mov eax, dword [esp + 0x10]
and al, bl
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x120]
mov dword [esp + 0x14], eax
mov ecx, dword [esp + 0x124]
mov dword [esp], 0x666a739f
mov dword [esp + 4], 0x5c6b646e
mov dword [esp + 8], 0xf1576777
mov dword [esp + 0xc], 0
xor ebx, ebx
movzx esi, byte [esp + ebx]
mov edx, ebx
and edx, 0xd
mov eax, ebx
and eax, 2
mov edi, ebx
or edi, 2
imul edi, eax
xor eax, 2
imul eax, edx
mov edx, ebx
xor edx, 0x6d78be7f
add edx, edi
add edx, eax
lea eax, [esi + esi]
not eax
add eax, esi
and eax, 0x4928f060
and esi, 0xffffff9f
or esi, eax
xor edx, 0x4928f060
mov eax, esi
and eax, edx
add edx, esi
add eax, eax
sub edx, eax
add dl, 0x85
mov byte [esp + ebx], dl
inc ebx
cmp ebx, 0x10
jne 0x423e30
mov eax, dword [esp + 0x14]
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.00406360
add esp, 0x10
mov dword [esp + 0x14], eax
movzx eax, byte [esp + 0x78]
mov dword [esp], 0x681d6e11
mov dword [esp + 4], 0x75771a19
mov word [esp + 8], 0xe105
mov dword [esp + 0xa], 0
mov byte [esp + 0xe], 0
mov esi, 0xa
mov edx, 0xd5
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + esi - 0xa]
mov ebx, edx
and ebx, 0x8d
mov ecx, esi
and ecx, 0x12
or ecx, ebx
mov ebx, edx
or ebx, edi
xor ecx, 0x52
and ecx, edi
not ebx
or ebx, ecx
add bl, 0x2e
mov byte [esp + esi - 0xa], bl
inc esi
dec edx
cmp esi, 0x19
jne 0x423ef0
push eax
lea ebx, [esp + 4]
push ebx
push dword [ebp + 0x14]
call fcn.004063f0
add esp, 0xc
mov edi, eax
movzx eax, byte [esp + 0x79]
mov dword [esp], 0x434e4d58
mov dword [esp + 4], 0x4b484a5b
mov dword [esp + 8], 0x3941
or edi, dword [esp + 0x14]
mov ecx, 0xb35a3134
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx + 0x4ca5cecc]
xor edx, ecx
mov esi, edx
not esi
add edx, 0xfb
and esi, 1
or edx, 1
add edx, esi
mov byte [esp + ecx + 0x4ca5cecc], dl
inc ecx
cmp ecx, 0xb35a3140
jne 0x423f60
push eax
push ebx
push dword [ebp + 0x14]
call fcn.004063f0
add esp, 0xc
or edi, eax
sete al
mov ecx, dword [esp + 0x10]
and cl, al
mov eax, ecx
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret