Function at 0x439830
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x6c
mov dword [esp + 0x1c], ecx
mov eax, dword [esp + 0x80]
mov dword [eax + 8], 0
mov dword [eax + 4], 0
mov dword [eax], 0
mov dword [esp + 0x50], 0
mov dword [esp + 0x28], 0x100000
mov dword [esp + 0xc], 0
mov dword [esp + 0x30], 0xcbcccdce
mov eax, 0x2ef40a89
nop
nop
nop
nop
nop
mov ebx, eax
not ebx
movzx esi, byte [esp + eax - 0x2ef40a59]
mov edx, esi
and edx, 0xffffff84
mov ecx, esi
not ecx
or ecx, 0xa1358e7b
add ecx, esi
inc ecx
and ebx, 4
mov ebp, eax
xor ebp, 0x84
mov edi, eax
or edi, 0xb
and edi, ebp
or edi, ebx
xor edx, ecx
not ecx
xor edx, 0x84
or ecx, esi
not ecx
and ecx, 0x84
or ecx, edx
xor ecx, edi
add cl, 0xb8
mov byte [esp + eax - 0x2ef40a59], cl
inc eax
cmp eax, 0x2ef40a8d
jne 0x439880
mov eax, dword [esp + 0x30]
mov ecx, dword [0x4486a8]
test ecx, ecx
je 0x43993e
xor edx, edx
mov esi, dword [0x4486ac]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [esi + edx*8], 0xa8f779e4
je 0x439910
inc edx
cmp ecx, edx
jne 0x439900
jmp 0x43993e
mov ecx, dword [esi + edx*8 + 4]
cmp ecx, eax
je 0x43993e
lea eax, [esp + 0x28]
lea edx, [esp + 0xc]
push 4
push 0x3000
push eax
push 0
push edx
push 0xffffffffffffffff
push 0x18
push ecx
push dword [0x4486b0]
call fcn.0043a9b0
add esp, 0x24
test eax, eax
js 0x43a01a
mov dword [esp + 0x48], 0
mov dword [esp + 0x44], 0
mov dword [esp + 0x40], 0
mov dword [esp + 0x3c], 0
mov dword [esp + 0x38], 0
mov dword [esp + 0x34], 0
mov dword [esp + 0x30], 0
mov dword [esp + 0x10], 0x1210101f
mov eax, 7
mov ecx, 0x9b3eabd8
movzx esi, byte [esp + eax + 9]
mov edx, ecx
or edx, esi
lea edi, [ecx + 0x64c15480]
and edi, 0x51
mov ebx, eax
and ebx, 0xe
or ebx, edi
xor ebx, 0x8e
and ebx, esi
not edx
or edx, ebx
mov esi, edx
and esi, 0x47
xor edx, 0xc7
lea edx, [edx + esi*2]
inc dl
mov byte [esp + eax + 9], dl
inc eax
dec ecx
cmp eax, 0xb
jne 0x439990
mov ebp, dword [esp + 0x10]
cmp ebp, 0x7ffffffe
mov edi, dword [esp + 0x1c]
ja 0x439f4b
lea ebx, [esp + 0x30]
mov dword [esp], 0
mov dword [esp + 8], 0
mov dword [esp + 4], 0
jmp 0x439a3d
mov eax, dword [esp + 0x80]
mov ecx, dword [esp + 4]
mov dword [eax + 4], ecx
mov ecx, dword [esp + 8]
mov dword [eax], ecx
mov ecx, dword [esp]
mov dword [eax + 8], ecx
nop
nop
nop
nop
nop
mov eax, dword [esp + 0x30]
mov ecx, dword [esp + 0x3c]
mov edx, ecx
and edx, eax
xor ecx, eax
lea ebp, [ecx + edx*2]
cmp ebp, 0x7fffffff
jae 0x439f4b
mov ecx, edi
push 0
push 0x1c
push ebx
push 0
push ebp
call fcn.00439650
cmp eax, 0xbfffffff
ja 0x439f4b
test eax, eax
js 0x439a20
cmp dword [esp + 0x40], 0x1000
jne 0x439a20
test byte [esp + 0x44], 0x66
je 0x439a20
mov eax, dword [esp + 0x3c]
mov edx, dword [esp + 0x28]
cmp eax, edx
mov dword [esp + 0x2c], ebp
jbe 0x439c58
mov dword [esp + 0x20], eax
mov dword [esp + 0x10], 0xcbcccdce
mov ecx, 0x2ef40a89
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov ebp, ecx
not ebp
movzx edi, byte [esp + ecx - 0x2ef40a79]
mov esi, edi
and esi, 0xffffff84
mov edx, edi
not edx
or edx, 0xa1358e7b
add edx, edi
inc edx
and ebp, 4
mov eax, ecx
xor eax, 0x84
mov ebx, ecx
or ebx, 0xb
and ebx, eax
or ebx, ebp
xor esi, edx
not edx
xor esi, 0x84
or edx, edi
not edx
and edx, 0x84
or edx, esi
xor edx, ebx
add dl, 0xb8
mov byte [esp + ecx - 0x2ef40a79], dl
inc ecx
cmp ecx, 0x2ef40a8d
jne 0x439aa0
mov ecx, dword [0x4486a8]
test ecx, ecx
je 0x439b30
mov edx, dword [esp + 0x10]
xor esi, esi
mov edi, dword [0x4486ac]
mov eax, dword [esp + 0x20]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [edi + esi*8], 0x6a2d3ea3
je 0x439b36
inc esi
cmp ecx, esi
jne 0x439b20
jmp 0x439b64
mov eax, dword [esp + 0x20]
jmp 0x439b64
mov ecx, dword [edi + esi*8 + 4]
cmp ecx, edx
je 0x439b64
push 0x8000
lea eax, [esp + 0x54]
push eax
lea eax, [esp + 0x14]
push eax
push 0xffffffffffffffff
push 0x10
push ecx
push dword [0x4486b0]
call fcn.0043a9b0
add esp, 0x1c
mov eax, dword [esp + 0x3c]
mov dword [esp + 0xc], 0
mov dword [esp + 0x28], eax
mov dword [esp + 0x10], 0xcbcccdce
mov eax, 0x2ef40a89
nop
nop
nop
mov ebx, eax
not ebx
movzx esi, byte [esp + eax - 0x2ef40a79]
mov edx, esi
and edx, 0xffffff84
mov ecx, esi
not ecx
or ecx, 0xa1358e7b
add ecx, esi
inc ecx
and ebx, 4
mov ebp, eax
xor ebp, 0x84
mov edi, eax
or edi, 0xb
and edi, ebp
or edi, ebx
xor edx, ecx
not ecx
xor edx, 0x84
or ecx, esi
not ecx
and ecx, 0x84
or ecx, edx
xor ecx, edi
add cl, 0xb8
mov byte [esp + eax - 0x2ef40a79], cl
inc eax
cmp eax, 0x2ef40a8d
jne 0x439b80
mov eax, dword [esp + 0x10]
mov ecx, dword [0x4486a8]
test ecx, ecx
je 0x439c10
xor edx, edx
mov esi, dword [0x4486ac]
mov edi, dword [esp + 0x1c]
lea ebx, [esp + 0x30]
mov ebp, dword [esp + 0x2c]
nop
nop
cmp dword [esi + edx*8], 0xa8f779e4
je 0x439c1e
inc edx
cmp ecx, edx
jne 0x439c00
jmp 0x439c4c
mov edi, dword [esp + 0x1c]
lea ebx, [esp + 0x30]
mov ebp, dword [esp + 0x2c]
jmp 0x439c4c
mov ecx, dword [esi + edx*8 + 4]
cmp ecx, eax
je 0x439c4c
push 4
push 0x3000
lea eax, [esp + 0x30]
push eax
push 0
lea eax, [esp + 0x1c]
push eax
push 0xffffffffffffffff
push 0x18
push ecx
push dword [0x4486b0]
call fcn.0043a9b0
add esp, 0x24
test eax, eax
js 0x439f4b
mov edx, dword [esp + 0x28]
mov ecx, edi
lea eax, [esp + 0x68]
push eax
push edx
push dword [esp + 0x14]
push ebp
call fcn.00439740
test eax, eax
jns 0x439ca0
mov dword [esp + 0x10], 0x64e3e2fc
xor ecx, ecx
nop
nop
nop
nop
nop
nop
nop
nop
mov edx, ecx
add dl, 0xa9
xor dl, byte [esp + ecx + 0x10]
add dl, 0xb8
mov byte [esp + ecx + 0x10], dl
inc ecx
cmp ecx, 4
jne 0x439c80
cmp eax, dword [esp + 0x10]
jne 0x439a20
push dword [esp + 0x8c]
push dword [esp + 0x8c]
push dword [esp + 0x8c]
push dword [esp + 0x74]
push dword [esp + 0x1c]
lea eax, [esp + 0x24]
push eax
call fcn.0043a030
add esp, 0x18
mov eax, dword [esp + 0x10]
mov ecx, dword [esp + 0x14]
mov dword [esp + 0x4c], ecx
cmp eax, ecx
je 0x439a01
mov dword [esp + 0x54], eax
mov ebx, eax
mov edx, dword [esp + 4]
mov eax, edx
mov esi, dword [esp + 8]
jmp 0x439d0d
mov esi, dword [esp + 8]
mov dword [esi + ebp], edi
add edx, 4
add ebx, 4
mov eax, edx
cmp ebx, dword [esp + 0x4c]
mov ebp, dword [esp + 0x2c]
je 0x439efc
mov edi, dword [ebx]
add edi, ebp
sub edi, dword [esp + 0xc]
mov ecx, eax
sub ecx, esi
mov ebp, esi
not ebp
cmp eax, dword [esp]
jne 0x439eac
mov dword [esp + 4], eax
mov dword [esp + 0x64], ecx
sar ecx, 2
lea eax, [ecx + 1]
mov edx, ecx
shr edx, 1
add edx, ecx
cmp edx, eax
ja 0x439d40
mov edx, eax
mov dword [esp + 0x60], edx
lea eax, [edx*4]
push eax
call fcn.00407f60
add esp, 4
test esi, esi
mov dword [esp + 8], eax
je 0x439e96
mov dword [esp + 0x20], edi
mov edi, esi
mov ecx, dword [esp + 4]
xor edi, ecx
mov edx, ebp
and edx, ecx
add edx, edx
mov dword [esp + 0x5c], edx
sub edx, edi
cmp eax, esi
jbe 0x439e40
lea ecx, [esi + edx]
cmp ecx, eax
jbe 0x439e40
test edx, edx
je 0x439e85
lea eax, [esi + edx]
dec eax
mov ecx, dword [esp + 8]
add ecx, edx
dec ecx
mov dword [esp], edx
and edx, 7
je 0x439ddb
mov dword [esp + 0x58], edi
mov dword [esp + 0x24], ebx
neg edx
xor edi, edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
movzx ebx, byte [eax + edi]
mov byte [ecx + edi], bl
dec edi
cmp edx, edi
jne 0x439dc0
add eax, edi
add ecx, edi
add dword [esp], edi
mov ebx, dword [esp + 0x24]
mov edi, dword [esp + 0x58]
sub edi, dword [esp + 0x5c]
cmp edi, 0xfffffff8
ja 0x439e85
neg dword [esp]
xor edi, edi
nop
nop
nop
movzx edx, byte [eax + edi]
mov byte [ecx + edi], dl
movzx edx, byte [eax + edi - 1]
mov byte [ecx + edi - 1], dl
movzx edx, byte [eax + edi - 2]
mov byte [ecx + edi - 2], dl
movzx edx, byte [eax + edi - 3]
mov byte [ecx + edi - 3], dl
movzx edx, byte [eax + edi - 4]
mov byte [ecx + edi - 4], dl
movzx edx, byte [eax + edi - 5]
mov byte [ecx + edi - 5], dl
movzx edx, byte [eax + edi - 6]
mov byte [ecx + edi - 6], dl
movzx edx, byte [eax + edi - 7]
mov byte [ecx + edi - 7], dl
add edi, 0xfffffff8
cmp dword [esp], edi
jne 0x439df0
jmp 0x439e85
mov ecx, edx
shr ecx, 2
mov dword [esp], edx
mov edx, esi
mov edi, eax
xchg esi, edx
rep movsd dword es:[edi], dword [esi]
xchg esi, edx
mov ecx, dword [esp]
mov edx, ecx
and edx, 0xfffffffc
lea edi, [eax + edx]
add edx, esi
shr ecx, 1
and ecx, 1
mov eax, edx
mov dword [esp + 0x24], edi
xchg esi, eax
rep movsw word es:[edi], word [esi]
xchg esi, eax
mov ecx, dword [esp]
test cl, 1
je 0x439e85
and ecx, 2
movzx eax, byte [edx + ecx]
mov edx, dword [esp + 0x24]
mov byte [edx + ecx], al
push esi
call fcn.00407f70
add esp, 4
mov edi, dword [esp + 0x20]
mov eax, dword [esp + 8]
mov ecx, dword [esp + 0x60]
lea ecx, [eax + ecx*4]
mov dword [esp], ecx
mov edx, eax
mov ecx, dword [esp + 0x64]
add edx, ecx
mov eax, dword [esp + 4]
and ebp, eax
not eax
and esi, eax
sub ebp, esi
cmp ebp, ecx
jae 0x439cf0
mov dword [esp + 4], edx
mov eax, dword [esp + 8]
lea edx, [eax + ebp]
add eax, ebp
add eax, 4
mov esi, edx
mov dword [esp + 0x20], edi
mov edi, eax
mov dword [esp + 0x24], ebx
xor ecx, ecx
xchg esi, esi
rep movsd dword es:[edi], dword [esi]
xchg esi, esi
xor ecx, ecx
mov edi, eax
xchg esi, edx
rep movsw word es:[edi], word [esi]
xchg esi, edx
mov edi, dword [esp + 0x20]
mov edx, dword [esp + 4]
mov ebx, dword [esp + 0x24]
jmp 0x439cf0
mov eax, dword [esp + 0x80]
mov dword [eax + 4], edx
mov esi, dword [esp + 8]
mov dword [eax], esi
mov ecx, dword [esp]
mov dword [eax + 8], ecx
mov eax, dword [esp + 0x54]
test eax, eax
je 0x439f3a
mov dword [esp + 4], edx
cmp eax, dword [esp + 0x4c]
lea ebx, [esp + 0x30]
je 0x439f31
push eax
call fcn.00407f70
add esp, 4
mov edi, dword [esp + 0x1c]
jmp 0x439a20
mov dword [esp + 4], edx
mov edi, dword [esp + 0x1c]
lea ebx, [esp + 0x30]
jmp 0x439a20
mov dword [esp + 0x10], 0xcbcccdce
mov eax, 0x2ef40a89
nop
nop
nop
nop
nop
nop
nop
nop
mov ebx, eax
not ebx
movzx esi, byte [esp + eax - 0x2ef40a79]
mov edx, esi
and edx, 0xffffff84
mov ecx, esi
not ecx
or ecx, 0xa1358e7b
add ecx, esi
inc ecx
and ebx, 4
mov ebp, eax
xor ebp, 0x84
mov edi, eax
or edi, 0xb
and edi, ebp
or edi, ebx
xor edx, ecx
not ecx
xor edx, 0x84
or ecx, esi
not ecx
and ecx, 0x84
or ecx, edx
xor ecx, edi
add cl, 0xb8
mov byte [esp + eax - 0x2ef40a79], cl
inc eax
cmp eax, 0x2ef40a8d
jne 0x439f60
mov eax, dword [0x4486a8]
test eax, eax
je 0x43a01a
mov ecx, dword [esp + 0x10]
xor edx, edx
mov esi, dword [0x4486ac]
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
cmp dword [esi + edx*8], 0x6a2d3ea3
je 0x439ff0
inc edx
cmp eax, edx
jne 0x439fe0
jmp 0x43a01a
mov eax, dword [esi + edx*8 + 4]
cmp eax, ecx
je 0x43a01a
lea ecx, [esp + 0x50]
lea edx, [esp + 0xc]
push 0x8000
push ecx
push edx
push 0xffffffffffffffff
push 0x10
push eax
push dword [0x4486b0]
call fcn.0043a9b0
add esp, 0x1c
mov eax, dword [esp + 0x80]
add esp, 0x6c
pop esi
pop edi
pop ebx
pop ebp
ret 0x10