Function at 0x422e90
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x150
cmp byte [ebp + 0x18], 0
je 0x422f4a
mov edi, dword [ebp + 0x10]
mov esi, dword [ebp + 8]
lea ebx, [esp + 0x28]
push 0x120
push 0
push ebx
call fcn.0040c870
add esp, 0xc
mov ecx, esi
push 0
push 0
push 0x120
push ebx
push edi
push dword [ebp + 0xc]
call fcn.00440780
mov ecx, eax
xor eax, eax
test ecx, ecx
js 0x42347e
mov dword [esp + 4], 0xdec7d0c6
mov byte [esp + 8], 0x3c
mov dword [esp + 9], 0
mov dword [esp + 0xc], 0
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, eax
add cl, 0xf4
xor cl, byte [esp + eax + 4]
add cl, 0x3c
mov byte [esp + eax + 4], cl
inc eax
cmp eax, 0xc
jne 0x422f10
cmp byte [esp + 0x47], 0
js 0x422f51
lea eax, [esp + 0x30]
lea ecx, [esp + 4]
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405b90
add esp, 0xc
mov al, 1
mov dword [esp + 0x14], eax
jmp 0x422fae
xor eax, eax
jmp 0x42347e
mov esi, dword [esp + 0x30]
mov ebx, dword [esp + 0x34]
mov eax, esi
or eax, ebx
je 0x422fa6
mov edi, dword [esp + 0x38]
inc edi
push edi
call fcn.0040c7f0
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push edi
mov edi, eax
push eax
push ebx
push esi
call fcn.00440780
test eax, eax
setns al
mov dword [esp + 0x14], eax
js 0x422f9b
lea eax, [esp + 4]
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405b90
add esp, 0xc
push edi
call fcn.0040c800
add esp, 4
jmp 0x422fae
mov dword [esp + 0x14], 0
mov dword [esp + 4], 0x2a22e812
mov word [esp + 8], 0xb5d9
mov dword [esp + 0xa], 0
mov word [esp + 0xe], 0
xor eax, eax
nop
nop
mov ecx, eax
and ecx, 0xc
mov edx, eax
and edx, 2
mov esi, edx
xor esi, 2
imul esi, ecx
or ecx, 2
imul ecx, edx
mov edx, eax
xor edx, 0x9e
add edx, esi
add edx, ecx
xor dl, byte [esp + eax + 4]
add dl, 0xea
mov byte [esp + eax + 4], dl
inc eax
cmp eax, 0xc
jne 0x422fd0
cmp byte [esp + 0x127], 0
js 0x42302b
lea eax, [esp + 0x110]
lea ecx, [esp + 4]
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405b90
add esp, 0xc
mov bl, 1
jmp 0x423087
mov esi, dword [esp + 0x110]
mov ebx, dword [esp + 0x114]
mov eax, esi
or eax, ebx
je 0x423085
mov edi, dword [esp + 0x118]
inc edi
push edi
call fcn.0040c7f0
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push edi
mov edi, eax
push eax
push ebx
push esi
call fcn.00440780
test eax, eax
setns bl
js 0x42307a
lea eax, [esp + 4]
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405b90
add esp, 0xc
push edi
call fcn.0040c800
add esp, 4
jmp 0x423087
xor ebx, ebx
mov eax, dword [esp + 0x14]
and al, bl
mov dword [esp + 0x14], eax
mov dword [esp + 4], 0x9fa1a6a8
mov dword [esp + 8], 0xe6d3d6cb
mov byte [esp + 0xc], 0x68
mov word [esp + 0xd], 0
mov byte [esp + 0xf], 0
mov eax, 0x8ad27f3c
mov ecx, 0xc3
nop
nop
nop
nop
movzx edx, byte [esp + eax + 0x752d80c8]
mov esi, edx
not esi
or esi, ecx
or edx, eax
and edx, esi
lea esi, [edx + edx]
mov edi, esi
and edi, 0x118407a6
xor edx, 0x49e383d3
mov ebx, edi
and ebx, edx
xor edi, edx
lea edi, [edi + ebx*2]
and edx, 1
or esi, 0xfd
lea edx, [esi + edx*2]
add edx, edi
add dl, 2
mov byte [esp + eax + 0x752d80c8], dl
inc eax
dec ecx
cmp eax, 0x8ad27f48
jne 0x4230c0
cmp byte [esp + 0x5f], 0
js 0x42312d
lea eax, [esp + 0x48]
lea ecx, [esp + 4]
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405b90
add esp, 0xc
mov bl, 1
jmp 0x423180
mov esi, dword [esp + 0x48]
mov ebx, dword [esp + 0x4c]
mov eax, esi
or eax, ebx
je 0x42317e
mov edi, dword [esp + 0x50]
inc edi
push edi
call fcn.0040c7f0
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push edi
mov edi, eax
push eax
push ebx
push esi
call fcn.00440780
test eax, eax
setns bl
js 0x423173
lea eax, [esp + 4]
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405b90
add esp, 0xc
push edi
call fcn.0040c800
add esp, 4
jmp 0x423180
xor ebx, ebx
mov eax, dword [esp + 0x14]
and al, bl
mov dword [esp + 0x14], eax
mov dword [esp + 4], 0xbfaaa8b8
mov byte [esp + 8], 0x54
mov word [esp + 9], 0
mov byte [esp + 0xb], 0
xor eax, eax
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edx, byte [esp + eax + 4]
mov esi, eax
and esi, 2
xor esi, 0xbdd793f2
mov ecx, eax
and ecx, 5
sub ecx, esi
mov esi, ecx
and esi, edx
add ecx, edx
add esi, esi
sub ecx, esi
lea edx, [ecx + 0xb9]
mov esi, 0x46
sub esi, ecx
or esi, 1
add esi, ecx
or edx, 1
add edx, esi
add dl, 0xba
mov byte [esp + eax + 4], dl
inc eax
cmp eax, 8
jne 0x4231b0
cmp byte [esp + 0x77], 0
js 0x423215
lea eax, [esp + 0x60]
lea ecx, [esp + 4]
push eax
push ecx
push dword [ebp + 0x14]
call fcn.00405b90
add esp, 0xc
mov bl, 1
jmp 0x423268
mov esi, dword [esp + 0x60]
mov ebx, dword [esp + 0x64]
mov eax, esi
or eax, ebx
je 0x423266
mov edi, dword [esp + 0x68]
inc edi
push edi
call fcn.0040c7f0
add esp, 4
mov ecx, dword [ebp + 8]
push 0
push 0
push edi
mov edi, eax
push eax
push ebx
push esi
call fcn.00440780
test eax, eax
setns bl
js 0x42325b
lea eax, [esp + 4]
push edi
push eax
push dword [ebp + 0x14]
call fcn.00405b90
add esp, 0xc
push edi
call fcn.0040c800
add esp, 4
jmp 0x423268
xor ebx, ebx
mov eax, dword [esp + 0x14]
and al, bl
mov dword [esp + 0x14], eax
mov eax, dword [esp + 0x128]
mov dword [esp + 0x1c], eax
mov eax, dword [esp + 0x12c]
mov dword [esp + 0x18], eax
mov dword [esp + 4], 0x1a16ef1b
mov dword [esp + 8], 0x1cef1c12
mov dword [esp + 0xc], 0x7903f3f3
mov dword [esp + 0x10], 0
mov eax, 0x69
mov edi, 0x96
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx esi, byte [esp + eax - 0x65]
lea ebx, [edi - 0x90]
and ebx, 0xf
mov edx, eax
and edx, 0x50
or edx, ebx
xor edx, 0xd0
mov ebx, esi
not ebx
or ebx, edx
mov edx, edi
or edx, esi
add ebx, esi
mov ecx, 0xfe
sub ecx, ebx
and ecx, edx
mov dl, 0xf2
sub dl, cl
mov byte [esp + eax - 0x65], dl
inc eax
dec edi
cmp eax, 0x79
jne 0x4232c0
mov eax, dword [esp + 0x1c]
mov dword [esp + 0x20], eax
mov eax, dword [esp + 0x18]
mov dword [esp + 0x24], eax
fild qword [esp + 0x20]
sub esp, 0x10
lea eax, [esp + 0x14]
mov dword [esp + 4], eax
mov eax, dword [ebp + 0x14]
mov dword [esp], eax
fstp qword [esp + 8]
call fcn.00405be0
add esp, 0x10
test eax, eax
sete cl
movzx eax, byte [esp + 0x80]
mov dword [esp + 4], 0x28551661
mov dword [esp + 8], 0x2d2f5a59
mov word [esp + 0xc], 0xb15d
mov dword [esp + 0xe], 0
mov edx, dword [esp + 0x14]
and dl, cl
mov edi, edx
mov ecx, 0xde
mov edx, 0x21
nop
nop
movzx ebx, byte [esp + ecx - 0xda]
mov esi, ecx
or esi, ebx
not ebx
or ebx, edx
and ebx, esi
add bl, 0xaa
mov byte [esp + ecx - 0xda], bl
inc ecx
dec edx
cmp ecx, 0xec
jne 0x423370
push eax
lea eax, [esp + 8]
push eax
push dword [ebp + 0x14]
call fcn.00405c70
add esp, 0xc
xor ecx, ecx
test eax, eax
sete cl
mov eax, edi
movzx eax, al
not eax
mov dword [esp + 0x1c], eax
or ecx, eax
mov dword [esp + 0x14], ecx
movzx eax, byte [esp + 0x81]
mov dword [esp + 0x18], eax
mov dword [esp + 4], 0xa9a6a794
mov dword [esp + 8], 0xb1b4b699
mov word [esp + 0xc], 0x23a3
mov dword [esp + 0xe], 0
mov ebx, 0x6f1b694b
xor esi, esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx edi, byte [esp + ebx - 0x6f1b6947]
mov edx, ebx
xor edx, edi
lea eax, [esi + 0x10e496b4]
or eax, edx
lea edx, [eax + eax]
neg edx
lea ecx, [esi + edx]
add ecx, 0x90e496b3
xor ecx, edi
lea edx, [ebx + eax*2]
add edx, 0x90e49701
and edx, edi
add edx, edx
sub edx, ecx
add edx, 0xa4a21ce9
mov eax, edx
and eax, 0x20
xor edx, 0xa0
lea eax, [edx + eax*2]
mov byte [esp + ebx - 0x6f1b6947], al
inc ebx
dec esi
cmp ebx, 0x6f1b6959
jne 0x423400
mov eax, dword [esp + 0x1c]
cmp dword [esp + 0x14], eax
setne bl
push dword [esp + 0x18]
lea eax, [esp + 8]
push eax
push dword [ebp + 0x14]
call fcn.00405c70
add esp, 0xc
test eax, eax
sete al
and al, bl
lea esp, [ebp - 0xc]
pop esi
pop edi
pop ebx
pop ebp
ret