Function at 0x423930
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 0x4239ea
mov edi, dword [ebp + 0x10]
mov esi, dword [ebp + 8]
lea ebx, [esp + 0x20]
push 0x120
push 0
push ebx
call fcn.0040c760
add esp, 0xc
mov ecx, esi
push 0
push 0
push 0x120
push ebx
push edi
push dword [ebp + 0xc]
call fcn.00440530
test eax, eax
js 0x4239ea
mov dword [esp], 0xaea790a6
mov byte [esp + 4], 0x2c
mov word [esp + 5], 0
mov byte [esp + 7], 0
mov eax, esp
mov ecx, 0xf3
nop
nop
nop
nop
nop
movzx edx, byte [eax]
mov esi, ecx
or esi, edx
mov edi, edx
not edi
or edi, ecx
add edi, edx
mov edx, 0xfe
sub edx, edi
and edx, esi
mov bl, 0xc3
sub bl, dl
mov byte [eax], bl
inc eax
dec ecx
cmp ecx, 0xeb
jne 0x4239a0
cmp byte [esp + 0x3f], 0
js 0x4239f1
lea eax, [esp + 0x28]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405af0
add esp, 0xc
mov al, 1
mov dword [esp + 0x10], eax
jmp 0x423a4c
xor eax, eax
jmp 0x423e54
mov ebx, dword [esp + 0x28]
mov esi, dword [esp + 0x2c]
mov eax, ebx
or eax, esi
je 0x423a44
mov edi, dword [esp + 0x30]
inc edi
push edi
call fcn.0040c650
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.00440530
test eax, eax
setns al
mov dword [esp + 0x10], eax
js 0x423a39
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405af0
add esp, 0xc
push edi
call fcn.0040c660
add esp, 4
jmp 0x423a4c
mov dword [esp + 0x10], 0
mov dword [esp], 0xc6c2dcca
mov word [esp + 4], 0x33d7
mov dword [esp + 6], 0
mov eax, 0x95c4a875
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ecx, byte [esp + eax + 0x6a3b578b]
mov edx, eax
and edx, ecx
add edx, edx
sub ecx, edx
add ecx, eax
mov edx, ecx
and edx, 0x36
xor ecx, 0xb6
lea ecx, [ecx + edx*2]
inc cl
mov byte [esp + eax + 0x6a3b578b], cl
inc eax
cmp eax, 0x95c4a87f
jne 0x423a70
cmp byte [esp + 0x11f], 0
js 0x423ac5
lea eax, [esp + 0x108]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405af0
add esp, 0xc
mov bl, 1
jmp 0x423b1f
mov ebx, dword [esp + 0x108]
mov esi, dword [esp + 0x10c]
mov eax, ebx
or eax, esi
je 0x423b1d
mov edi, dword [esp + 0x110]
inc edi
push edi
call fcn.0040c650
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.00440530
test eax, eax
setns bl
js 0x423b12
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405af0
add esp, 0xc
push edi
call fcn.0040c660
add esp, 4
jmp 0x423b1f
xor ebx, ebx
mov eax, dword [esp + 0x10]
and al, bl
mov dword [esp + 0x10], eax
mov dword [esp], 0x7d7f7a4c
mov dword [esp + 4], 0x72454249
mov byte [esp + 8], 0xec
mov dword [esp + 9], 0
mov byte [esp + 0xd], 0
xor eax, eax
xor ecx, ecx
nop
nop
movzx edx, byte [esp + ecx]
mov esi, ecx
xor esi, 0x50588f1d
mov edi, eax
and edi, 0x1a
add esi, edi
add esi, 0x622a49ba
xor esi, edx
mov edx, esi
and edx, 0x4c
xor esi, 0xcc
lea edx, [esi + edx*2]
inc dl
mov byte [esp + ecx], dl
inc ecx
add eax, 2
cmp ecx, 0xe
jne 0x423b50
cmp byte [esp + 0x57], 0
js 0x423ba5
lea eax, [esp + 0x40]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405af0
add esp, 0xc
mov bl, 1
jmp 0x423bf6
mov ebx, dword [esp + 0x40]
mov esi, dword [esp + 0x44]
mov eax, ebx
or eax, esi
je 0x423bf4
mov edi, dword [esp + 0x48]
inc edi
push edi
call fcn.0040c650
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.00440530
test eax, eax
setns bl
js 0x423be9
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405af0
add esp, 0xc
push edi
call fcn.0040c660
add esp, 4
jmp 0x423bf6
xor ebx, ebx
mov edx, dword [esp + 0x10]
and dl, bl
mov dword [esp], 0xfb8ef080
mov byte [esp + 4], 0x1c
mov dword [esp + 5], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0xc4
xor cl, byte [esp + eax]
add cl, 0x2c
mov byte [esp + eax], cl
inc eax
cmp eax, 9
jne 0x423c20
cmp byte [esp + 0x6f], 0
js 0x423c56
lea eax, [esp + 0x58]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
mov esi, edx
call fcn.00405af0
mov edx, esi
add esp, 0xc
mov bl, 1
jmp 0x423caf
mov ebx, dword [esp + 0x58]
mov esi, dword [esp + 0x5c]
mov eax, ebx
or eax, esi
je 0x423cad
mov dword [esp + 0x10], edx
mov edi, dword [esp + 0x60]
inc edi
push edi
call fcn.0040c650
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.00440530
test eax, eax
setns bl
js 0x423c9e
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405af0
add esp, 0xc
push edi
call fcn.0040c660
add esp, 4
mov edx, dword [esp + 0x10]
jmp 0x423caf
xor ebx, ebx
and dl, bl
mov dword [esp + 0x10], edx
mov eax, dword [esp + 0x120]
mov dword [esp + 0x14], eax
mov ecx, dword [esp + 0x124]
mov dword [esp], 0xead2d9e5
mov dword [esp + 4], 0xf8d5e0d6
mov dword [esp + 8], 0x4be9dddd
mov byte [esp + 0xc], 0
mov eax, 0xae5d888f
mov esi, 0x51a27770
nop
nop
nop
movzx ebx, byte [esp + esi - 0x51a27770]
mov edi, eax
xor edi, 0x8448880c
mov edx, eax
or edx, 0x2a1500d3
and edx, edi
mov edi, esi
and edi, 0x4180312c
or edi, edx
xor edi, ebx
mov edx, edi
xor edx, 0xd3
add edx, 0xcf
and edi, 1
xor edx, 1
lea edx, [edx + edi*2]
mov byte [esp + esi - 0x51a27770], dl
dec eax
inc esi
cmp eax, 0xae5d8882
jne 0x423cf0
mov eax, dword [esp + 0x14]
mov dword [esp + 0x18], eax
mov dword [esp + 0x1c], ecx
fild qword [esp + 0x18]
sub esp, 0x10
lea edi, [esp + 0x10]
mov dword [esp + 4], edi
mov eax, dword [ebp + 0x14]
mov dword [esp], eax
fstp qword [esp + 8]
call fcn.00405b40
add esp, 0x10
mov esi, eax
movzx eax, byte [esp + 0x78]
mov dword [esp], 0xfce7faef
mov dword [esp + 4], 0xfffdeeef
mov dword [esp + 8], 0xfe3
mov byte [esp + 0xc], 0
mov ecx, 0x15bba6c1
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx - 0x15bba6c1]
mov ebx, edx
and ebx, ecx
add bl, bl
sub dl, bl
movzx edx, dl
add edx, ecx
add dl, 0x3b
mov byte [esp + ecx - 0x15bba6c1], dl
inc ecx
cmp ecx, 0x15bba6ce
jne 0x423da0
push eax
push edi
push dword [ebp + 0x14]
call fcn.00405bd0
add esp, 0xc
mov edi, eax
movzx eax, byte [esp + 0x79]
mov dword [esp], 0xe31e1de8
mov dword [esp + 4], 0xdbd8dacb
mov word [esp + 8], 0xa921
mov dword [esp + 0xa], 0
or edi, esi
mov ecx, 0x9bea2c1c
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + ecx + 0x6415d3e4]
mov ebx, edx
and ebx, ecx
add bl, bl
sub dl, bl
movzx edx, dl
add edx, ecx
add dl, 0x74
mov byte [esp + ecx + 0x6415d3e4], dl
inc ecx
cmp ecx, 0x9bea2c2a
jne 0x423e10
push eax
lea eax, [esp + 4]
push eax
push dword [ebp + 0x14]
call fcn.00405bd0
add esp, 0xc
or edi, eax
sete cl
mov eax, dword [esp + 0x10]
and al, cl
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret