Function at 0x423d30
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 0x423e23
mov edi, dword [ebp + 0x10]
mov esi, dword [ebp + 8]
lea ebx, [esp + 0x20]
push 0x120
push 0
push ebx
call fcn.0040c8d0
add esp, 0xc
mov ecx, esi
push 0
push 0
push 0x120
push ebx
push edi
push dword [ebp + 0xc]
call fcn.004400b0
test eax, eax
js 0x423e23
mov dword [esp], 0xda23e81a
mov byte [esp + 4], 0xb4
mov dword [esp + 5], 0
mov byte [esp + 9], 0
mov eax, 0x39e4279e
mov ecx, 0x21
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + eax - 0x39e4279e]
mov edi, ecx
and edi, 0x28
mov edx, eax
xor edx, 0x8a08ade8
or edx, edi
xor edx, esi
xor edx, 0x8a08ade8
lea esi, [edx - 0x2174c617]
mov edi, esi
mov ebx, esi
xor esi, 1
add edx, esi
add edx, 0xde8b39e9
and ebx, 0xfe
sub edx, ebx
and edi, 1
add edx, edi
mov byte [esp + eax - 0x39e4279e], dl
inc eax
dec ecx
cmp eax, 0x39e427a8
jne 0x423db0
cmp byte [esp + 0x3f], 0
js 0x423e2a
lea eax, [esp + 0x28]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405db0
add esp, 0xc
mov al, 1
mov dword [esp + 0x10], eax
jmp 0x423e85
xor eax, eax
jmp 0x424256
mov ebx, dword [esp + 0x28]
mov esi, dword [esp + 0x2c]
mov eax, ebx
or eax, esi
je 0x423e7d
mov edi, dword [esp + 0x30]
inc edi
push edi
call fcn.0040c730
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.004400b0
test eax, eax
setns al
mov dword [esp + 0x10], eax
js 0x423e72
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405db0
add esp, 0xc
push edi
call fcn.0040c740
add esp, 4
jmp 0x423e85
mov dword [esp + 0x10], 0
mov dword [esp], 0x7e72647a
mov word [esp + 4], 0x36f
mov dword [esp + 6], 0
mov byte [esp + 0xa], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0x81
xor cl, byte [esp + eax]
add cl, 0x7b
mov byte [esp + eax], cl
inc eax
cmp eax, 0xb
jne 0x423eb0
cmp byte [esp + 0x11f], 0
js 0x423ee8
lea eax, [esp + 0x108]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405db0
add esp, 0xc
mov bl, 1
jmp 0x423f42
mov ebx, dword [esp + 0x108]
mov esi, dword [esp + 0x10c]
mov eax, ebx
or eax, esi
je 0x423f40
mov edi, dword [esp + 0x110]
inc edi
push edi
call fcn.0040c730
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.004400b0
test eax, eax
setns bl
js 0x423f35
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405db0
add esp, 0xc
push edi
call fcn.0040c740
add esp, 4
jmp 0x423f42
xor ebx, ebx
mov eax, dword [esp + 0x10]
and al, bl
mov dword [esp + 0x10], eax
mov dword [esp], 0x8587faf4
mov dword [esp + 4], 0x82fdf2e9
mov byte [esp + 8], 4
mov dword [esp + 9], 0
mov word [esp + 0xd], 0
mov eax, 0x43
mov ecx, 0xbc
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax - 0x43]
mov esi, eax
or esi, edx
not edx
or edx, ecx
and edx, esi
add dl, 0xb1
mov byte [esp + eax - 0x43], dl
inc eax
dec ecx
cmp eax, 0x52
jne 0x423f80
cmp byte [esp + 0x57], 0
js 0x423fbb
lea eax, [esp + 0x40]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405db0
add esp, 0xc
mov bl, 1
jmp 0x42400c
mov ebx, dword [esp + 0x40]
mov esi, dword [esp + 0x44]
mov eax, ebx
or eax, esi
je 0x42400a
mov edi, dword [esp + 0x48]
inc edi
push edi
call fcn.0040c730
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.004400b0
test eax, eax
setns bl
js 0x423fff
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405db0
add esp, 0xc
push edi
call fcn.0040c740
add esp, 4
jmp 0x42400c
xor ebx, ebx
mov eax, dword [esp + 0x10]
and al, bl
mov dword [esp + 0x10], eax
mov dword [esp], 0xb1a6b4ac
mov byte [esp + 4], 0x18
mov dword [esp + 5], 0
mov eax, 0x3b
mov ecx, 0xc4
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + eax - 0x3b]
mov edx, ecx
xor edx, eax
and edx, esi
xor edx, eax
add dl, 0xd9
mov byte [esp + eax - 0x3b], dl
inc eax
dec ecx
cmp eax, 0x44
jne 0x424040
cmp byte [esp + 0x6f], 0
js 0x424079
lea eax, [esp + 0x58]
mov ecx, esp
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405db0
add esp, 0xc
mov bl, 1
jmp 0x4240ca
mov ebx, dword [esp + 0x58]
mov esi, dword [esp + 0x5c]
mov eax, ebx
or eax, esi
je 0x4240c8
mov edi, dword [esp + 0x60]
inc edi
push edi
call fcn.0040c730
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.004400b0
test eax, eax
setns bl
js 0x4240bd
mov eax, esp
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405db0
add esp, 0xc
push edi
call fcn.0040c740
add esp, 4
jmp 0x4240ca
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], 0x1a12e905
mov dword [esp + 4], 0x8150016
mov dword [esp + 8], 0x7b190d0d
mov byte [esp + 0xc], 0
xor esi, esi
mov edx, 0xffffffff
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov edi, edx
or edi, 0x68
mov ebx, esi
or ebx, 0x68
add ebx, edi
add ebx, esi
inc bl
xor bl, byte [esp + esi]
add bl, 0xf8
mov byte [esp + esi], bl
lea edi, [esi + 1]
dec edx
mov esi, edi
cmp edi, 0xd
jne 0x424110
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.00405e00
add esp, 0x10
mov edi, eax
movzx eax, byte [esp + 0x78]
mov dword [esp], 0x60756269
mov dword [esp + 4], 0x5d234e51
mov dword [esp + 8], 0xa955
mov ecx, 0x56e7ac8f
movzx edx, byte [esp + ecx - 0x56e7ac8f]
lea esi, [ecx - 0x56e7abb3]
mov ebx, edx
not ebx
or ebx, esi
lea esi, [ecx + edx]
lea edx, [edx + ebx*2]
neg edx
add edx, ecx
add edx, 0xfffffffe
and esi, 1
xor edx, 1
lea edx, [edx + esi*2]
mov byte [esp + ecx - 0x56e7ac8f], dl
inc ecx
cmp ecx, 0x56e7ac9b
jne 0x424180
push eax
lea eax, [esp + 4]
push eax
push dword [ebp + 0x14]
call fcn.00405e90
add esp, 0xc
mov esi, eax
movzx eax, byte [esp + 0x79]
mov dword [esp + 0x14], eax
mov dword [esp], 0xd3d6d5e8
mov dword [esp + 4], 0xebe8eafb
mov dword [esp + 8], 0x49d1
or esi, edi
xor eax, eax
mov edx, 0xbb29a40f
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [esp + eax]
mov edi, edx
or edi, ebx
mov ecx, eax
xor ecx, edx
xor ecx, 0xf
add ecx, edx
and ecx, ebx
not edi
or edi, ecx
add edi, 0x95c36e28
mov ecx, edi
and ecx, 0x4f
xor edi, 0x4f
lea ecx, [edi + ecx*2]
add cl, 0xd9
mov byte [esp + eax], cl
inc eax
dec edx
cmp eax, 0xc
jne 0x424200
push dword [esp + 0x14]
lea eax, [esp + 4]
push eax
push dword [ebp + 0x14]
call fcn.00405e90
add esp, 0xc
or esi, 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