Function at 0x427840
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
and esp, 0xfffffff8
sub esp, 0x460
mov dword [esp + 0x54], 0
mov dword [esp + 0x50], 0
mov dword [esp + 0x4c], 0
mov dword [esp + 0x48], 0
mov dword [esp + 0x5c], 0x179a1997
mov dword [esp + 0x60], 0x13731589
mov dword [esp + 0x64], 0xf5c1185
mov dword [esp + 0x68], 0xb820d91
mov dword [esp + 0x6c], 0x7060995
mov dword [esp + 0x70], 0
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 0x17
ja 0x4278ee
mov eax, dword [esp + 8]
mov ecx, dword [esp + 8]
movzx ecx, byte [esp + ecx + 0x5c]
mov edx, eax
xor edx, 0x42a0706
and eax, 0x42a0706
lea eax, [edx + eax*2]
xor eax, ecx
mov dword [esp + 0x2c], eax
mov eax, dword [esp + 0x2c]
add al, 0xe2
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x5c], al
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 0x18
jb case.default.0x4278ff
lea ebx, [esp + 0x5c]
lea ecx, [esp + 0x48]
push ebx
call fcn.0043be00
shr eax, 0x1f
jmp dword [eax*4 + 0x44a2c0]
lea ecx, [esp + 0x48]
push 0x410
call fcn.0043c0a0
not eax
shr eax, 0x1f
xor ecx, ecx
jmp dword [eax*4 + 0x44a2d8]
jmp dword [0x44a2e0]
mov dword [esp + 0x5c], 0x36cf002d
mov dword [esp + 0x60], 0x83ed528
mov dword [esp + 0x64], 0x3c353fd9
mov dword [esp + 0x68], 0x332a3add
mov dword [esp + 0x6c], 0x28c7de32
mov dword [esp + 0x70], 0x2bccdac5
mov dword [esp + 0x74], 0x2e31ca36
mov dword [esp + 0x78], 0x52ab2cc7
mov dword [esp + 0x7c], 0xaab842be
mov dword [esp + 0x80], 0x5aa79db9
mov dword [esp + 0x84], 0xe796b9b9
mov dword [esp + 0x88], 0
mov dword [esp + 8], 0
mov eax, dword [esp + 8]
cmp eax, 0x2f
ja 0x427a03
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 8]
mov eax, dword [esp + 8]
movzx eax, byte [esp + eax + 0x5c]
mov edx, ecx
not edx
or edx, 0x4ad1faa2
add edx, ecx
xor ecx, 0x4ad1faa2
lea esi, [ecx + edx*2]
lea ecx, [ecx + edx*2]
add ecx, 2
lea edx, [eax + esi]
add edx, 2
and ecx, eax
add ecx, ecx
sub edx, ecx
mov dword [esp + 0x2c], edx
mov eax, dword [esp + 0x2c]
add al, 0xd6
mov ecx, dword [esp + 8]
mov byte [esp + ecx + 0x5c], al
inc dword [esp + 8]
mov eax, dword [esp + 8]
cmp eax, 0x30
jb 0x4279b0
lea eax, [esp + 0x2c]
lea ecx, [esp + 0x48]
push 0
push 0x2b
push ebx
push eax
call fcn.0043cea0
jmp case.0x4278ff.8
lea eax, [esp + 0x2c]
lea ecx, [esp + 0x48]
push 0
push 0x2b
push ebx
push eax
call fcn.0043cea0
jmp dword [0x44a2e8]
mov dword [esp + 0x5c], 0x36cf002d
mov dword [esp + 0x60], 0x83ed528
mov dword [esp + 0x64], 0x3c353fd9
mov dword [esp + 0x68], 0x332a3add
mov dword [esp + 0x6c], 0x28c7de32
mov dword [esp + 0x70], 0x2bccdac5
mov dword [esp + 0x74], 0x2e31ca36
mov dword [esp + 0x78], 0x52ab2cc7
mov dword [esp + 0x7c], 0xaab842be
mov dword [esp + 0x80], 0x5aa79db9
mov dword [esp + 0x84], 0xe796b9b9
mov dword [esp + 0x88], 0
mov dword [esp + 4], 0
mov eax, dword [esp + 4]
cmp eax, 0x2f
ja 0x427a20
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ecx, dword [esp + 4]
mov eax, dword [esp + 4]
movzx eax, byte [esp + eax + 0x5c]
mov edx, ecx
not edx
or edx, 0x4ad1faa2
add edx, ecx
xor ecx, 0x4ad1faa2
lea esi, [ecx + edx*2]
lea ecx, [ecx + edx*2]
add ecx, 2
lea edx, [eax + esi]
add edx, 2
and ecx, eax
add ecx, ecx
sub edx, ecx
mov dword [esp + 8], edx
mov eax, dword [esp + 8]
add al, 0xd6
mov ecx, dword [esp + 4]
mov byte [esp + ecx + 0x5c], al
inc dword [esp + 4]
mov eax, dword [esp + 4]
cmp eax, 0x30
jb 0x427ac0
jmp 0x427a20
mov eax, dword [case.0x4278ff.5]
xor ecx, ecx
nop
jmp eax
mov ebx, ecx
jmp dword [0x44a38c]
mov edi, dword [esp + 0x2c]
mov esi, dword [esp + 0x30]
xor eax, eax
cmp edi, esi
sete al
jmp dword [eax*4 + 0x44a2f0]
mov eax, esi
sub eax, edi
sar eax, 3
imul eax, eax, 0x421
push eax
call fcn.0040c8e0
add esp, 4
mov dword [esp + 0x3c], 0
xor ecx, ecx
cmp edi, esi
setne cl
mov dword [esp + 0x38], eax
mov dword [esp + 0x1c], eax
mov dword [esp + 0x20], esi
jmp dword [ecx*4 + 0x44a308]
mov ebx, dword [esp + 0x3c]
mov eax, ebx
and al, 1
movzx eax, al
jmp dword [eax*4 + 0x44a310]
mov edi, dword [esp + 0x38]
jmp dword [0x44a370]
mov esi, dword [edi]
mov dword [esp + 0x44], edi
mov edi, dword [edi + 4]
push 0x400
push 0
push ebx
call fcn.0040c990
add esp, 0xc
lea eax, [esp + 8]
lea ecx, [esp + 0x48]
push eax
push 0
push 0x400
push ebx
push edi
push esi
call fcn.0043cc50
cmp eax, 0xc0000000
setae al
mov ecx, dword [esp + 8]
or ecx, dword [esp + 0xc]
sete cl
or cl, al
movzx ecx, cl
xor eax, eax
jmp dword [ecx*4 + 0x44a318]
mov eax, 1
jmp dword [0x44a328]
mov edi, dword [esp + 0x44]
jmp dword [eax*4 + 0x44a330]
xor ebx, ebx
test edi, edi
jne 0x428061
jmp 0x42806e
mov ebx, dword [esp + 0x1c]
mov byte [ebx], 0
mov dword [esp + 0x5c], 0xe7e2e131
mov dword [esp + 0x60], 0xe30f0ef5
mov dword [esp + 0x64], 0xf8fcfef1
mov dword [esp + 0x68], 0xfaea1633
mov dword [esp + 0x6c], 0xf35f401
mov dword [esp + 0x70], 0x903060b
mov dword [esp + 0x74], 0x1316cf0b
mov word [esp + 0x78], 0x9518
mov dword [esp + 0x7a], 0
mov byte [esp + 0x7e], 0
mov edi, dword [esp + 0x38]
sub ebx, edi
mov dword [esp + 4], 0
mov eax, dword [esp + 4]
cmp eax, 0x22
ja 0x428027
nop
nop
nop
nop
mov eax, dword [esp + 4]
mov ecx, dword [esp + 4]
movzx edx, byte [esp + ecx + 0x5c]
mov ecx, eax
xor ecx, 0x4ccc9b6c
and eax, 0xcccc9b6c
lea ecx, [ecx + eax*2]
lea eax, [ecx + edx]
and ecx, edx
mov edx, eax
xor edx, ecx
mov esi, ecx
not esi
and eax, esi
add eax, eax
sub eax, edx
xor ecx, eax
and eax, esi
add eax, eax
sub eax, ecx
mov dword [esp + 8], eax
mov eax, dword [esp + 8]
add al, 0xe4
mov ecx, dword [esp + 4]
mov byte [esp + ecx + 0x5c], al
inc dword [esp + 4]
mov eax, dword [esp + 4]
cmp eax, 0x23
jb 0x427fd0
lea eax, [esp + 0x5c]
mov ecx, dword [ebp + 8]
push ebx
push edi
push eax
call fcn.0040d4b0
mov ebx, eax
jmp dword [0x44a370]
cmp edi, esi
je 0x42806e
push edi
call fcn.0040c8f0
add esp, 4
jmp dword [0x44a38c]
int3
jns 0x44a305
add byte [eax], bl
jnp 0x44a309
add byte [eax], ah
jnp 0x44a30d
add byte [eax], ah
jnp 0x44a311
add byte [eax], ah
jnp 0x44a315
add byte [edx], ah
jnp 0x44a319
add byte [edx], ah
jnp 0x44a31d
add byte [edx], ah
jns 0x44a321
add byte [ecx], bh
jp 0x44a325
add byte [eax], ch
jns 0x44a329
add byte [edx], ch
jnp 0x44a32d
add byte [ecx], bh
jp 0x44a331
add byte [eax + 0x7b], al
inc edx
add byte [ebx + 0x7f], dl
inc edx
add byte [ecx], al
add byte [eax], al
add byte [ecx], al
add byte [eax], al
add byte [ecx + 0x1004280], bl
add byte [eax], al
add byte [eax + 0x7b], bh
inc edx
jnp 0x44a34d
add byte [ebp - 0x75ffbd85], dh
jnp 0x44a351
add byte [edx + 0x6200427b], cl
jnp 0x44a355
add byte [edx + 0x7f], ah
inc edx
jg 0x44a359
add byte [eax], dl
jl 0x44a35d
add byte [ebx], bl
jl 0x44a361
add byte [eax], dl
jl 0x44a365
add byte [eax], dl
jl 0x44a369
add byte [ebx], bl
jl 0x44a36d
add byte [eax], dl
jl 0x44a371
add byte [eax + 0x2600427b], ah
jnp 0x44a375
add byte [esi], ah
jl 0x44a379
add byte [eax + 0x5f00427b], ah
jl 0x44a381
add byte [eax - 0x6cffbd85], ah
jl 0x44a389
add bh, ah
jge 0x44a38d
add al, dh
jge 0x44a391
add byte [edi], cl
jle 0x44a395
add byte [esi + edi*2], dl
inc edx
jle 0x44a399
add byte [eax - 0x59ffbd82], ah
jle 0x44a39d
add byte [esi + 0x2100427e], ah
jle 0x44a3a1
add byte [ecx], ah
jg 0x44a3a5
add cl, cl
jle 0x44a3a9
add ah, dh
jle 0x44a3ad
add byte [ecx], ah
jg 0x44a3b1
add byte [esi], bh
add byte [edx], 0x52
add byte [edx], 0x50
add byte [edx], 0x50
add byte [edx], 0x50
add byte [edx], 0x52
add byte [edx], 0x74
add byte [edx], 0x80
add byte [edx], 0x8f
add byte [edx], 0x80
add byte [edx], 1
add byte [eax], al
add byte [ecx], al
add byte [eax], al
add byte [eax], dl
add dword [edx], 1
mov dword [eax - 0x7ee8ffbe], 0x82540042
inc edx
add byte [eax + 0x61004283], ah
add byte [eax], al
add bh, al
add byte [edx], 0x17
add dword [edx], 0x428254
mov al, byte [0x61004283]
add byte [edx], 0xa0
add dword [edx], 0x61
add byte [edx], 0x80
add byte [edx], 0xa4
add byte [edx], 0x80
add byte [edx], 0xc0
add dword [edx], 0xffffffb0
add byte [edx], 0xc0
add dword [edx], 0x7a
add dword [edx], 0xffffff88
add dword [edx], 0xffffffc0
add dword [edx], 0x70
test byte [edx], al
inc eax
test dword [edx], eax
push ss
test dword [edx], eax
inc eax
test dword [edx], eax
add byte [edx + eax*2 + 0x4283e000], al
add dh, al
add dword [edx], 0x1d
test byte [edx], al
adc byte [ecx - 0x7effffbe], al
inc edx
add bh, al
add byte [edx], 0x10
add dword [edx], 0x4280d9
mov edi, 0xec004285
add ah, ch
xchg byte [edx], al
add eax, 0xd7004287
add bh, dl
xchg dword [edx], eax
adc eax, 0xfa004287
xchg dword [edx], eax
sub cl, byte [eax - 0x77c8ffbe]
inc edx
add byte [eax - 0x78], dl
inc edx
add byte [eax - 0x78], dl
inc edx
add byte [ecx - 0x78], ch
inc edx
add byte [edx + ecx*4], dl
inc edx
add byte [ecx - 0x78], bh
inc edx
add byte [0xab00428a], al
mov byte [edx], al
ror byte [ecx - 0x76faffbe], cl
inc edx
add ah, al
mov dword [edx], eax
sub byte [ecx + 0x10042], dl
add byte [eax], al
add dword [eax], eax
add byte [eax], al
std
xchg edi, eax
inc edx
add byte [ecx], al
add byte [eax], al
add ah, al
mov dword [edx], eax
adc byte [ecx - 0x762fffbe], 0x42
add al, dl
mov dword [edx], eax
ror byte [ecx - 0x762fffbe], cl
inc edx
add al, ah
mov dword [edx], eax
loopne 0x44a417
inc edx
add dl, ah
mov dword [edx], eax
loopne 0x44a41f
inc edx
add al, ch
mov dword [edx], eax
add eax, 0xb00428a
mov al, byte [edx]
adc al, 0x8a
inc edx
add byte [eax], ah
mov al, byte [edx]
and byte [edx - 0x75dfffbe], cl
inc edx
add byte [edx], ah
mov al, byte [edx]
add al, 0x88
inc edx
add bh, cl
mov al, byte [edx]
fisttp qword [edx - 0x77e4ffbe]
inc edx
add byte [ebx], dh
lea eax, [edx]
and dword [esi - 0x6fd9ffbe], ecx
inc edx
add byte [edi - 0x72], cl
inc edx
add byte [eax], dl
nop
inc edx
add byte [esi + ecx*4 - 0x702dffbe], cl
inc edx
add bl, bh
mov es, word [edx]
ror byte [edi - 0x6c9effbe], cl
inc edx
add dl, dl
pop dword [edx]
cwde
xchg ebx, eax
inc edx
add byte [ebx + edx*4 - 0x6c2bffbe], al
inc edx
add byte [edi], ch
xchg esp, eax
inc edx
add byte [edi - 0x7fffbd6c], dl
xchg esp, eax
inc edx
add al, dl
xchg esp, eax
inc edx
add al, dl
xchg esp, eax
inc edx
add al, dl
xchg esp, eax
inc edx
add al, dl
xchg esp, eax
inc edx
add dh, dl
xchg esp, eax
inc edx
add byte [eax], dl
xchg ebp, eax
inc edx
add byte [eax], dl
xchg ebp, eax
inc edx
add byte [eax + 0x10004294], al
xchg ebp, eax
inc edx
add byte [eax - 0x6c], dh
inc edx
add byte [edx - 0x6b], al
inc edx
add byte [eax - 0x6c], dh
inc edx
add byte [eax - 0x6c], dh
inc edx
add byte [eax - 0x6c], dh
inc edx
add byte [esi - 0x6b], ch
inc edx
add byte [edx - 0x6b], ah
inc edx
add byte [eax], ah
xchg ebp, eax
inc edx
add byte [esi - 0x6b], ch
inc edx
add byte [edx*4 - 0x6a83ffbe], ch
inc edx
add byte [ebp + edx*4 - 0x6a4affbe], dl
inc edx
add byte [ecx], ah
xchg esi, eax
inc edx
add byte [ecx], ah
xchg esi, eax
inc edx
add byte [eax - 0x50ffbd6a], al
xchg ebp, eax
inc edx
add byte [edx + 0x71004296], dl
xchg edi, eax
inc edx
add byte [ebx + edx*4 - 0x701fffbe], al
inc edx
add al, ah
pop dword [edx]
loop 0x44a519
inc edx
add al, ah
pop dword [edx]
pop dword [edx]
adc byte [eax - 0x6fe9ffbe], dl
inc edx
add byte [eax], ah
nop
inc edx
add byte [eax], ah
nop
inc edx
add byte [eax], ah
nop
inc edx
add byte [esi], ah
nop
inc edx
add byte [eax], ah
nop
inc edx
add byte [ebx - 0x73], al
inc edx
add bh, ah
nop
inc edx
add ah, bh
nop
inc edx
add byte [edi - 0x73], ah
inc edx
add byte [esi], al
xchg ecx, eax
inc edx
add byte [ecx - 0x1affbd69], bl
xchg edi, eax
inc edx
add dh, ch
xchg edi, eax
inc edx
add ch, ah
xchg edi, eax
inc edx
add byte [ecx - 0xaffbd69], bl
stosd dword es:[edi], eax
inc edx
add byte [ebx - 0x58], ah
inc edx
add byte [edx], dh
scasd eax, dword es:[edi]
inc edx
add ch, dh
stosd dword es:[edi], eax
inc edx
add byte [eax], dh
cwde
inc edx
add byte [eax], dh
cwde
inc edx
add byte [edx], dh
cwde
inc edx
add byte [eax], dh
cwde
inc edx
add byte [eax], ah
test al, 0x42
add byte [edx - 0x68], al
inc edx
add byte [eax], ah
test al, 0x42
add byte [eax], ah
test al, 0x42
add byte [esi], ah
test al, 0x42
add byte [eax], ah
test al, 0x42
add byte [eax + ebp*4], ch
inc edx
add byte [0xc10042a8], bh
movsb byte es:[edi], byte [esi]
inc edx
add byte [eax - 0x5d], ah
inc edx
add cl, al
movsb byte es:[edi], byte [esi]
inc edx
add byte [eax], ah
cmpsb byte [esi], byte es:[edi]
inc edx
add byte [eax], dl
test al, 0x42
add byte [esi], dh
cmpsb byte [esi], byte es:[edi]
inc edx
add byte [eax - 0x64], dl
inc edx
add byte [ebx - 0x5a], bl
inc edx
add byte [0x3000429d], al
popfd
inc edx
add byte [eax], dh
popfd
inc edx
add byte [edi - 0x63], ah
inc edx
add byte [esi + 0x7500429c], dl
popfd
inc edx
add byte [esi - 0x64], dl
inc edx
add byte [ebp - 0x64], ah
inc edx
add byte [esi - 0x64], dl
inc edx
add byte [edx - 0x64], bh
inc edx
add byte [esi + 0x4800429c], dl
cwde
inc edx
add byte [edx - 0x32ffbd66], bh
lcall 0x42, 0x9bf80042
add dword [edx + eax*2 + 0x429c2500], ebx
add byte [eax], dh
pushfd
inc edx
add byte [edi + 0x5000429c], bl
pushfd
inc edx
add byte [ebp - 0x4fffbd64], ah
pushfd
inc edx
add byte [eax - 0x64], dl
inc edx
add byte [eax + 0x7600429c], dh
cmpsd dword [esi], dword es:[edi]
inc edx
add al, dl
cmpsb byte [esi], byte es:[edi]
inc edx
add byte [esi - 0x59], dh
inc edx
add byte [eax], dl
test al, 0x42
add byte [ecx], al
add byte [eax], al
add byte [ecx], al
add byte [eax], al
add byte [ecx + 0x10042af], dh
add byte [eax], al
add byte [eax - 0x5a], dh
inc edx
add byte [eax - 0x7fffbd5a], al
cmpsb byte [esi], byte es:[edi]
inc edx
add byte [eax - 0x7fffbd5a], al
cmpsb byte [esi], byte es:[edi]
inc edx
add byte [esi + 0x200042a6], al
cwde
inc edx
add byte [eax + 0x6500429c], dl
mov al, byte [0x9d800042]
inc edx
add al, al
pushfd
inc edx
add byte [eax - 0x2effbd63], al
pushfd
inc edx
add bh, ch
pushfd
inc edx
add al, ah
pushfd
inc edx
add bh, dl
pushfd
inc edx
add al, ah
pushfd
inc edx
add bh, ch
pushfd
inc edx
add ch, dh
pushfd
inc edx
add byte [eax], ah
cwde
inc edx
add byte [ebx - 0x58], al
inc edx
add byte [eax - 0x58], dl
inc edx
add byte [eax - 0x58], dl
inc edx
add byte [esi - 0x58], dl
inc edx
add byte [edi - 0x56ffbd48], bh
mov dh, 0x42
add byte [ebp - 0x56ffbd4a], al
mov dh, 0x42
add byte [ebx - 0x4a], dh
inc edx
add byte [esi - 0x4a], al
inc edx
add byte [eax - 0x4a], ah
inc edx
add byte [edi - 0x4a], cl
inc edx
add bh, cl
scasd eax, dword es:[edi]
inc edx
add byte [eax - 0x4a], ah
inc edx
add byte [edx], dh
mov al, 0x42
add dl, ah
scasd eax, dword es:[edi]
inc edx
add byte [eax + esi*4], dl
inc edx
add al, bl
mov al, 0x42
add al, dl
mov cl, 0x42
add byte [eax + esi*4], dl
inc edx
add byte [0x42b2], al
mov cl, 0x42
add byte [0x42b2], dl
mov cl, 0x42
add byte [0x42b2], ah
mov cl, 0x42
add byte [ecx], al
add byte [eax], al
add byte [ecx], al
add byte [eax], al
add byte [ecx], al
add byte [eax], al
add byte [0x350042b2], ah
mov dl, 0x42
add byte [eax], al
mov cl, 0x42
add byte [ebp - 0x4e], al
inc edx
add byte [eax], al
mov cl, 0x42
add dl, ch
mov dl, 0x42
add al, bh
mov dl, 0x42
add byte [edx - 0x4b], dl
inc edx
add byte [esi], ah
mov bl, 0x42
add byte [edx], dh
mov ch, 0x42
add byte [edi - 0x4d], cl
inc edx
add byte [edx - 0x74ffbd4d], ah
mov bl, 0x42
add byte [eax - 0x5fffbd4d], ah
mov bl, 0x42
add byte [eax - 0x5dffbd4d], ah
mov bl, 0x42
add byte [0x1e0042b5], dl
mov ch, 0x42
add byte [eax], dh
mov ch, 0x42
add byte [eax], dh
mov ch, 0x42
add byte [edx], dh
mov ch, 0x42
add byte [eax], dh
mov ch, 0x42
add byte [eax], bh
mov ch, 0x42
add byte [edx - 0x4b], dl
inc edx
add byte [eax - 0x4b], dl
inc edx
add byte [eax - 0x4b], dl
inc edx
add byte [edx - 0x4b], dl
inc edx
add byte [eax - 0x4b], dl
inc edx
add bl, dh
mov ch, 0x42
add byte [eax], al
mov cl, 0x42
add byte [edx], bl
mov al, 0x42
add byte [0x300042b0], ah
mov al, 0x42
add byte [eax], dh
mov al, 0x42
add byte [eax], dh
mov al, 0x42
add byte [edx], dh
mov al, 0x42
add byte [eax - 0x4a], al
inc edx
add byte [ebx - 0x4a], bh
inc edx
add byte [edx - 0x6effbd4a], bl
mov dh, 0x42
add byte [ecx + 0x7b0042b6], dl
mov dh, 0x42
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [eax], al
add byte [ebx - 0x31], ch
inc edx
add byte [esi - 0x31], ah
inc edx
add bh, dl
rol dword [edx], 1
dec edi
jmp 0xf720a884